Swift 4中隐藏按钮无法重新显示问题跟进
解决按钮无法随Picker选项重新显示的问题
看起来你已经完成了按钮隐藏的基础工作,问题应该出在UIPickerView的选中事件处理环节——要么是没给Picker设置代理,要么是没在选中选项时触发按钮显示的逻辑。我来帮你补全代码并梳理核心要点:
第一步:完善PickerView的基础设置
首先在viewDidLoad里补全PickerView的代理、数据源绑定,以及把它设置为文本框的输入视图:
override func viewDidLoad() { super.viewDidLoad() // 绑定PickerView的代理和数据源 eduPicker.delegate = self eduPicker.dataSource = self // 将Picker设置为eduField的输入视图 eduField.inputView = eduPicker // 初始状态下隐藏三个学历按钮 associate.isHidden = true bachelor.isHidden = true master.isHidden = true }
第二步:实现UIPickerView的DataSource和Delegate方法
你需要让ViewController遵循UIPickerViewDataSource和UIPickerViewDelegate协议,然后实现必要的方法,重点是选中选项后的逻辑处理:
// 记得在ViewController类声明里添加协议 class YourViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate { // 你的IBOutlet和变量保持不变 @IBOutlet weak var eduField: UITextField! var education = ["Middle School Education", "High School Education", "College Education"] var eduPicker = UIPickerView() @IBOutlet weak var associate: UIButton! @IBOutlet weak var bachelor: UIButton! @IBOutlet weak var master: UIButton! // PickerView数据源方法:设置列数 func numberOfComponents(in pickerView: UIPickerView) -> Int { return 1 } // PickerView数据源方法:设置每列的行数 func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { return education.count } // PickerView代理方法:设置每行显示的内容 func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { return education[row] } // 关键:选中Picker选项后的逻辑处理 func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { let selectedEdu = education[row] eduField.text = selectedEdu // 根据选中的选项控制按钮显示/隐藏 if selectedEdu == "College Education" { associate.isHidden = false bachelor.isHidden = false master.isHidden = false } else { associate.isHidden = true bachelor.isHidden = true master.isHidden = true } } // 你的viewDidLoad和其他方法... }
额外检查点
- 确认三个按钮的
IBOutlet已经正确连接到Storyboard中的按钮,没有红叉或未绑定的情况 - 如果需要点击文本框外部收起Picker,可以添加点击手势或实现
textFieldShouldReturn方法
内容的提问来源于stack exchange,提问作者yukimoda
相关产品推荐
相关产品推荐

