更改按钮标题后,标题会根据 pickerView 正确更改。然后,当我单击应用程序中的不同页面并返回时,按钮标题将恢复为默认值。当我尝试再次更改它时,一旦 pickerView 弹出,它就会转到正确的新更改标题。为什么会发生这种情况以及如何解决它?
这是当用户在 pickerView 中选择一行时我想要更改的按钮标题的代码 -
@IBAction func roleButton(sender: UIButton) {
sender.setTitle(Manager.roleText, forState: UIControlState.Normal)
}
这是 pickerView 代码 -
var Array = ["A", "B", "C", "D", "E"]
var Placement = 0
@IBOutlet var rolePicker: UIPickerView!
override func viewDidLoad() {
super.viewDidLoad()
rolePicker.delegate = self
rolePicker.dataSource = self
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
return Array[row]
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return Array.count
}
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 1
}
@IBAction func Submit(sender: AnyObject) {
if Placement == 0 {
Manager.roleText = Array[0]
}
else if Placement == 1 {
Manager.roleText = Array[1]
}
else if Placement == 2 {
Manager.roleText = Array[2]
}
else if Placement == 3 {
Manager.roleText = Array[3]
}
else if Placement == 4 {
Manager.roleText = Array[4]
}
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
Placement = row
}
最佳答案
我相信,如果没有对带有按钮的 ViewController 的引用,一旦您离开它,它就会被销毁以释放内存。 (也就是说,一旦没有更多的引用它)。如果您在 prepareForSegue
期间将对 ViewController1 的引用传递给 ViewController2(例如 segue.destinationViewController.delegate = self
),它应该保留它,以便您可以返回它。 p>
关于ios - 按钮标题更改后重置为默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30921824/