簡體   English   中英

如何在Swift中使用UIKit注冊多個按鈕?

[英]How to register more than one button tap using UIKit in Swift?

我正在嘗試按鈕,但遇到了一個可能很簡單的問題。 我有兩個按鈕和兩個標簽。

標簽生成“ 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")
        }
    }
}

確定嘗試要執行的操作,讓我們舉個例子。 因此,您有4個標簽和2個按鈕(A,B),當您單擊一個按鈕時,標簽具有隨機生成的A,B值,您需要檢查該按鈕是否具有與標簽相同的文本,然后確定是否正確如果不正確,請對label2進行相同操作,我們會繼續嘗試。

這樣做的一種邏輯方法是將標簽與標簽相關聯(例如,我認為您確實這樣做了),並有一個臨時變量來跟蹤當前標簽

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

這樣的東西應該可以工作,我在從iPad上接聽時沒有嘗試過,而且我沒有筆記本電腦的訪問權限,但是那樣的東西應該可以正常工作,毫無疑問,我可以為您提供XD幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM