基本上这就是我尝试过的:
@IBAction func buttonTwo(sender: UIButton){ // <- Should UIButton be AnyObject ?
buttonOne.setTitle("Do", forState: .Normal) // This wont change the other buttons text
}
//在知道如何做之后,我的目标是遵循这个逻辑:
@IBAction func buttonTwo(sender: UIButton) {
if ( buttonOne == "What") {
buttonOne.setTitle("Do", forState: .Normal)
} else {
buttonOne.setTitle(¨What", forState: .Normal)
}
}
答案 0 :(得分:0)
我认为这就是你要找的东西:
@IBAction func buttonTwo(sender: UIButton) {
if let text = buttonOne.titleForState(UIControlState.Normal) { //make sure title is not nil
if ( text == "What") {
buttonOne.setTitle("Do", forState: .Normal)
} else {
buttonOne.setTitle("What", forState: .Normal)
}
}
}
我跑得很好:
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var buttonOne: UIButton!
@IBAction func changeText(sender: AnyObject) {
if let text = buttonOne.titleForState(UIControlState.Normal) {
if ( text == "What") {
buttonOne.setTitle("Do", forState: .Normal)
} else {
buttonOne.setTitle("What", forState: .Normal)
}
}
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
你确定@IBOutlet是否正确连接到buttonOne?
注意:从故事板创建@IBAction时,它会将发件人设置为AnyObject。我改变了它,看它是否像UIButton那样有效。
像你问的数组选项
class ViewController: UIViewController {
@IBOutlet weak var buttonOne: UIButton!
var buttonArray:[UIButton] = []
@IBAction func changeText(sender: UIButton) {
if let text = buttonArray[0].titleForState(UIControlState.Normal) {
if ( text == "What") {
buttonArray[0].setTitle("Do", forState: .Normal)
} else {
buttonArray[0].setTitle("What", forState: .Normal)
}
}
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
buttonArray.append(buttonOne)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}