2016-09-22 28 views
0

因此,我有一個倒計時應用程序,並有不同的倒計時格式。這包括幾分鐘幾秒到某個日期。我想一次只顯示一個變量。Swift - 如何在順序點擊時顯示不同的文本

所以它會去:天TAP分鐘TAP小時TAP秒

然後,一旦秒錄音,又回到了起點。所以它會持續幾秒TAP並繼續重複。

我已經嘗試過使用手勢識別器,但我是災難性卡住,請你能幫忙。

回答

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 
} 
1

我會盡可能簡化此解決方案。

你可以放一個按鈕,然後在代碼中處理它(你根本不需要手勢識別器)並根據狀態改變文本。就像默認情況下,你有幾分鐘時間,只需將狀態改爲幾小時等等。

如何改變狀態?我只是使用枚舉,並像state += 1

+0

它是一個標籤。 – Alex

+0

不是什麼大不了的,在標籤上放一個按鈕,然後用自動佈局對齊,比如'label.center = button.center,label.width = button.width,label height = button.height' – Traveler

0

如果你想保留你的手勢識別器,那麼你可以有一個格式和索引持有的視圖控制器的數組,從init開始0。在每個抽頭上,遞增索引(使用模數使其回到0),然後將倒數的格式設置爲當前索引處數組中的那個格式。

相關問題