第一次选择pickerView时没有触发条件

时间:2018-03-30 15:51:18

标签: swift uibutton uipickerview

我有一个按钮和pickerView。按下按钮时,将显示pickerView。

在pickerView上进行选择后,按钮的标题应更改为" Show All",它会执行,但从不在第一次迭代。它只会在后续按下按钮时发生变化。

我确定我错过了什么,但无法指出什么。

@IBOutlet weak var chooseSourcesBtnOut: UIButton!
var isPicky = false  

@IBAction func chooseSourcesBtn(_ sender: UIButton) {
isPicky = !isPicky    

if isPicky {
  if self.dropDown.isHidden {
    self.dropDown.isHidden = false
  }
} else {
  if self.dropDown.isHidden == false {
    self.dropDown.isHidden = true
  }
  chooseSourcesBtnOut.titleLabel?.text = "Choose Source"
  tableView.reloadData()
}
}

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
    isPicky = true
    selection = pickerSourceRows[row]    
    chooseSourcesBtnOut.titleLabel?.textAlignment = .center
    chooseSourcesBtnOut.titleLabel?.text = "Show All"
    dropDown.isHidden = true
    tableView.reloadData()
  }

1 个答案:

答案 0 :(得分:0)

我将设置文本对齐的行移动到viewWillAppear的中心位置,它现在按预期工作。显然,改变按钮的textAlignment是一个禁忌,然后立即更改文本。谁知道?哦,无论如何,这都属于viewWillAppear所有意图和目的。

override func viewWillAppear(_ animated: Bool) {
 super.viewWillAppear(true)
   chooseSourcesBtnOut.titleLabel?.textAlignment = .center
}