2016-03-29 28 views
0

我正在試驗按鈕,我遇到了可能是一個簡單的問題。我有兩個按鈕和兩個標籤。如何在Swift中使用UIKit註冊多個按鈕水龍頭?

標籤生成「A」或「B」的隨機字符串值。如果選擇了合適的按鈕,我希望正確的標籤消失。

我已經拿出下面的代碼,但我遇到了一個問題。如果字母相同,則在點擊相應的按鈕時,這兩個標籤將被隱藏。

我明白爲什麼會發生這種情況。這是因爲我的代碼是在buttonA被點擊一次時執行的(我還沒有啓動按鈕B,所以它什麼也沒有做)。

所以我的問題是我如何需要2個水龍頭?換句話說,如果label_1和label_2都顯示爲字符串「A」,我將如何要求用戶點擊buttonA兩次?如果需要更多代碼,請在評論中告訴我。

@IBOutlet weak var label_1: UILabel! 
    @IBOutlet weak var label_2: UILabel! 
    @IBOutlet weak var label_3: UILabel! 
    @IBOutlet weak var label_4: UILabel! 
    @IBOutlet weak var label_5: UILabel! 


    var visibleLetters = ["A", "B", "Z", "X"] 
    var text = "", text2 = "", text3 = "", text4 = "", text5 = "" 
    let aButton = "A", bButton = "B", zButton = "Z", xButton = "X" 
    var x = 0 


    override func viewDidLoad() { 
     super.viewDidLoad() 

     createRandomLetter(text, aSecondLetter: text2, aThirdLetter: text3, aFourthLetter: text4, aFifthLetter: text5) 

    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    @IBAction func buttonA(sender: UIButton) { 

     if aButton == label_1.text { 
      label_1.hidden = true 
      label_1.tag += 1 
     } 

     else { 
      //play animation 
      print("play animation") 
     } 
    } 

    @IBAction func buttonB(sender: UIButton) { 
     if bButton == label_1.text { 
      label_1.hidden = true 
     } 
    } 

    @IBAction func buttonX(sender: UIButton) { 
     if xButton == label_1.text { 
      label_1.hidden = true 
     } 
    } 

    @IBAction func buttonZ(sender: UIButton) { 
     if zButton == label_1.text { 
      label_1.hidden = true 
     } 
    } 



    func createRandomLetter(individualLetter: String, aSecondLetter: String, aThirdLetter: String, aFourthLetter: String, aFifthLetter: String) { 

     let individuaLetter = visibleLetters[Int(arc4random_uniform(UInt32(visibleLetters.count)))], 
     aSecondLetter = visibleLetters[Int(arc4random_uniform(UInt32(visibleLetters.count)))], 
     aThirdLetter = visibleLetters[Int(arc4random_uniform(UInt32(visibleLetters.count)))], 
     aFourthLetter = visibleLetters[Int(arc4random_uniform(UInt32(visibleLetters.count)))], 
     aFifthLetter = visibleLetters[Int(arc4random_uniform(UInt32(visibleLetters.count)))] 

     label_1.text = individuaLetter 
     label_2.text = aSecondLetter 
     label_3.text = aThirdLetter 
     label_4.text = aFourthLetter 
     label_5.text = aFifthLetter 
    } 

    func isCorrect() { 

     if aButton == label_1.text { 
      label_1.hidden = true 
      label_1.tag += 1 
     } 

     else if label_1.tag == 1 && aButton == label_2.text { 

     } 
     else { 
      //play animation 
      print("play animation") 
     } 
    } 
} 
+0

我不是確定你想要做什麼。你能給我更多的細節嗎? – Ryan

+0

label1綁定到buttonA,label2綁定buttonB?你能否解釋兩次敲擊的必要性? – ryantxr

+0

我會盡我所能解釋我想要的。我有一組隨機的字母和一組常量按鈕。按鈕總是A,B,X,Z(我很後悔添加額外的按鈕),所以我會假裝我沒有添加X和Z.所以我有2個標籤隨機顯示A或B 。如果label_1顯示A,則用戶必須按A;如果label_1顯示B,則用戶必須按B。如果用戶按下正確的按鈕,則他對label_2執行相同的操作。 – QuirkyCoder

回答

0

好吧,試圖弄清楚你正在做什麼讓我們來做一個例子。所以你有4個標籤和2個按鈕(A,B),標籤有隨機生成的A,B值,當你點擊一個按鈕時,你需要檢查該按鈕是否有相同的標籤文本,如果它是正確的,我們對label2做同樣的事情,如果不正確,我們會繼續嘗試。

要做到這一點可能是對標籤的標籤聯繫起來(我想你是alredy這樣做),並有一個時間變量,以保持當前標籤的軌道例如

var temporal:String! 
    var current_tag:Int = 1 
    override func viewDidLoad() { 
    super.viewDidLoad() 

    createRandomLetter(text, aSecondLetter: text2, 
    aThirdLetter: text3, aFourthLetter: text4, aFifthLetter: text5) 
    temporal = label1.text 

} 

    @IBAction func buttonZ(sender: UIButton) { 
    //Answer is correct 
    if zButton == temporal { 
     current_tag++ 
     IsCorrect(current_tag) 
    } 

} 
func Iscorrect(tag:Int) 
{ 

    if(label2.tag == tag) 
    { 
     temporal = label2.text 
    } 
    else if(label3.tag == tag) 
    { 
     temporal = label2.text 
    } 
    else if(label4.tag == tag) 
    { 
     temporal = label2.text 
    } 
} 

Somethign的邏輯方式就像應該工作,我沒有嘗試它,因爲我從我的Ipad回答,我沒有訪問我的筆記本電腦,但類似的東西應該完全工作,任何疑問,我可以幫你XD

+0

是的!這正是我想要做的!現在我試圖理解它爲什麼起作用。此外,我得到這個錯誤:致命錯誤:意外地發現零,同時解開一個可選值。我想我收到錯誤,因爲label2.tag與current_tag不匹配,但他們似乎匹配,所以我試圖找出爲什麼時間沒有價值。 – QuirkyCoder

+0

這個錯誤一定會發生,因爲當我們試圖比較一個未被賦值的變量時,爲什麼在視圖的didload方法中,我初始化臨時試圖初始化之前像var temp:String =「」我將在家在幾個小時內嘗試一下,如果答案幫助你把它標記爲正確的XD –

+0

我錯過了你在viewDidLoad中分配了這個變量。經過一段時間的研究後,我認爲我瞭解了發生了什麼的基本想法。感謝您的幫助。 – QuirkyCoder

相關問題