Swift - 如何按顺序显示不同的文本

Swift - How to show different text upon taps in sequence

所以我有一个倒计时应用程序并且有不同格式的倒计时。这包括直到某个日期的天分小时秒。我只想让一个变量一次出现。

所以会 go:days TAP 分钟 TAP 小时 TAP 秒

然后,一旦录制秒数,它就会回到开头。所以它会持续几秒钟 TAP 天并继续重复。

我试过使用手势识别器,但我遇到了灾难性的问题,请你帮忙。

我会尽可能简化这个解决方案。

您可以放置​​一个按钮,点击后只需在代码中处理它(您显然不需要手势识别器)并根据状态更改文本。就像默认情况下你有分钟,点击你只需将状态更改为小时等等。

如何改变状态?我只会使用枚举并喜欢 state += 1

如果你想保留你的手势识别器,那么你可以有一个格式数组和一个由你的视图控制器保存的索引,它在初始化时从 0 开始。在每次点击时,增加索引(使用模数以便它返回到 0),然后将倒计时的格式设置为数组中当前索引处的格式。

我给你一个直接的解决方案。

首先,创建一个枚举来表示您当前显示的内容:

enum CountDownMode {
    case Days, Minutes, Hours, Seconds
}

然后,在控制器中像这样声明一个变量:

var currentMode = CountDownMode.Days

实际上,您不需要使用手势识别器来识别如此简单的触摸。只需覆盖 touchesBegan:

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {

}

touchesBegan 中,使用 currentMode 的值,您可以轻松找出下一个模式并相应地更改文本:

switch currentMode {
case .Days:
    // change text here
    currentMode = .Minutes
case .Minutes:
    // change text here
    currentMode = .Hours
case .Hours:
    // change text here
    currentMode = .Seconds
case .Seconds:
    // change text here
    currentMode = .Days
}