我正在试验按钮,我遇到了可能是一个简单的问题。 我有两个按钮和两个标签。
标签生成“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") } } }I am experimenting with buttons, and I have run into what is probably a simple problem. I have two buttons and two labels.
The labels generate random string values of either "A" or "B". I want the correct label to disappear if the appropriate button is selected.
I have come up with the following code, but I have run into a problem. If the letters are the same, both labels will be hidden when the corresponding button is tapped.
I understand why this is happening, I think. It's because my code is executed when buttonA is tapped once(I haven't started on button B yet, so it doesn't do anything.)
So my question is how do I require 2 taps? In other words, if label_1 and label_2 are both displayed as String "A", how would i require the user to tap buttonA twice? If more code is needed, let me know in the comments.
@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
OK trying to figure it out what you are trying to do let's do an example. So you have 4 labels, and 2 Buttons (A,B), the labels have random generated values of A,B when you click a button you need to check if that button has the same text of the label then if it is correct we do the same with label2 if it's not correct we keep trying.
A logical way to do this can be to associate tags to your labels (that i think you are alredy doing it) and have a temporal variable to keep track of the current label for example
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 like that should work, I didn't try it as I'm answering from my Ipad and I do not have access to my laptop but something like that should totally work, any doubt I can help you XD
如何在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") } } }I am experimenting with buttons, and I have run into what is probably a simple problem. I have two buttons and two labels.
The labels generate random string values of either "A" or "B". I want the correct label to disappear if the appropriate button is selected.
I have come up with the following code, but I have run into a problem. If the letters are the same, both labels will be hidden when the corresponding button is tapped.
I understand why this is happening, I think. It's because my code is executed when buttonA is tapped once(I haven't started on button B yet, so it doesn't do anything.)
So my question is how do I require 2 taps? In other words, if label_1 and label_2 are both displayed as String "A", how would i require the user to tap buttonA twice? If more code is needed, let me know in the comments.
@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
OK trying to figure it out what you are trying to do let's do an example. So you have 4 labels, and 2 Buttons (A,B), the labels have random generated values of A,B when you click a button you need to check if that button has the same text of the label then if it is correct we do the same with label2 if it's not correct we keep trying.
A logical way to do this can be to associate tags to your labels (that i think you are alredy doing it) and have a temporal variable to keep track of the current label for example
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 like that should work, I didn't try it as I'm answering from my Ipad and I do not have access to my laptop but something like that should totally work, any doubt I can help you XD
发布评论