2017-03-18 74 views
1

我有一個UIButton,我想切換按鈕的功能之間的情況。第一種情況是打印你好,第二種情況是打印是。它會重新啓動並繼續重複。我嘗試過,但我保持失敗。我在下面嘗試了這一點,但我仍然得到一個錯誤,「類型'Int'的表達式模式不能匹配類型'Bool'的值在情況0:和情況1 :. Im嘗試切換按鈕的功能,每次按它的按鈕UIButton的切換功能

func Target(sender: UIButton){ 

switch (true){ 

case 0: 
    print("hello") 
case 1: 
    print("yes") 

default: 
    println("hello") 
} 

} 
+0

如果您發佈已嘗試解決問題的代碼,您有更好的機會獲得有用的回覆。 – nathan

+0

編輯您的問題以包含您的代碼並更清楚地解釋您的問題。有人可以幫助你。或者,使用斷點和調試器來遍歷代碼以查找邏輯錯誤。另外,請閱讀有關如何提出問題的常見問題解答:https://stackoverflow.com/help/how-to-ask –

+0

現在可以編輯它了嗎? – john

回答

0

雖然在許多語言中,你可以使用整數值01爲布爾值truefalse,斯威夫特是強類型,所以一個Int不是Bool。這就是斯威夫特編譯器告訴你。

此外,您有一個邏輯錯誤。您正在接通值true 。這是一個常數,所以它永遠不會有其他值; switch函數是無關緊要的。

你想要做什麼是對其他一些狀態變量的值,你跟蹤你是否應該打印「你好」或「yes」

var buttonState = false 

func target(_ sender: UIButton) { 
    switch self.buttonState { 
     case false: 
      print("hello") 
     case true: 
      print("yes") 
    } 
    self.buttonState = !self.buttonState // Invert the button state variable 
} 

還要注意,按照慣例,只有類和開關結構體名稱應該以大寫字母開頭。屬性和功能應該以小寫字母開頭。堅持這一慣例會幫助其他人(和你)閱讀你的代碼並理解它是什麼。

0

你可以做同樣的事情,而不需要在你的項目中增加額外的布爾值。只需使用按鈕選擇/未選擇狀態。

func target(_ sender: UIButton) { 
     if sender.isSelected{ 
      sender.isSelected = false 
     } 
     else{ 
      sender.isSelected = true 
     } 
    }