所以我有一个倒计时应用程序,并具有不同的倒计时格式。这包括直到特定日期的几分钟小时。我想一次只显示一个变量。
所以它会:天TAP分钟TAP小时TAP秒
然后,一旦录制一秒钟,它就会回到起点。所以它会持续几天TAP并继续重复。
我尝试过使用手势识别器,但我遇到了灾难性的困扰,请帮助你。
答案 0 :(得分:1)
我会尽可能地简化这个解决方案。
你可以放一个按钮,然后在代码中处理它(显然你不需要手势识别器)并根据状态更改文本。就像默认情况下你有分钟,你只需要将状态改为小时等等。
如何改变状态?我会使用枚举,就像state += 1
答案 1 :(得分:1)
我会给你一个简单的解决方案。
首先,创建一个代表您当前正在展示的内容的枚举:
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
}
答案 2 :(得分:0)
如果你想保留你的手势识别器,那么你可以拥有一个格式数组和一个由视图控制器保存的索引,它在init上从0开始。在每次点击时,递增索引(使用模数使其返回0),然后将倒计时的格式设置为当前索引处数组中的倒计时格式。