Swift - 如何在顺序点击时显示不同的文本

问题描述:

因此,我有一个倒计时应用程序,并有不同的倒计时格式。这包括几分钟几秒到某个日期。我想一次只显示一个变量。Swift - 如何在顺序点击时显示不同的文本

所以它会去:天TAP分钟TAP小时TAP秒

然后,一旦秒录音,又回到了起点。所以它会持续几秒TAP并继续重复。

我已经尝试过使用手势识别器,但我是灾难性卡住,请你能帮忙。

我会给你一个简单的解决方案。

首先,创建一个代表的东西枚举你在此刻显示:

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 
} 

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

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

如何改变状态?我只是使用枚举,并像state += 1

+0

它是一个标签。 – Alex

+0

不是什么大不了的,在标签上放一个按钮,然后用自动布局对齐,比如'label.center = button.center,label.width = button.width,label height = button.height' – Traveler

如果你想保留你的手势识别器,那么你可以有一个格式和索引持有的视图控制器的数组,从init开始0。在每个抽头上,递增索引(使用模数使其回到0),然后将倒数的格式设置为当前索引处数组中的那个格式。