代码之家  ›  专栏  ›  技术社区  ›  yukimoda

Swift 4隐藏按钮不再现

  •  0
  • yukimoda  · 技术社区  · 7 年前

    这是我之前问题的后续 here 。我可以很好地隐藏按钮,但当我选择“大学教育”选项时,它们不会再次出现。这是我的代码:

    @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!
    override func viewDidLoad() {
        super.viewDidLoad()
        eduPicker.delegate = self
        eduPicker.dataSource = self
        eduField.inputView = eduPicker
    
        if eduField.text == "College Education"{
          associate.isHidden = false
          bachelor.isHidden = false
          master.isHidden = false
        }
        else{
          associate.isHidden = true
          bachelor.isHidden = true
          master.isHidden = true
      }
    }
    func numberOfComponents(in pickerView: UIPickerView) -> Int {
        return 1
    }
    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        return education.count
    }
    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        eduField.text = education[row]
        eduField.resignFirstResponder()
    }
    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        return education[row]
        }
    }
    

    我知道,当这些按钮隐藏或显示时,我的代码部分是正确的。我将else中的值从false更改为true,但我想我不完全理解这些值是如何存储在viewpicker中的,因为我的代码显然无法识别我告诉它的值。我在24小时内两次问同样的问题,真的很傻,但这让我发疯。谁能帮帮我吗?

    1 回复  |  直到 7 年前
        1
  •  2
  •   imilakovic    7 年前

    看起来您没有更新按钮状态。

    我建议采用如下方法:

    func updateButtonsVisibility() {
        if eduField.text == "College Education"{
          associate.isHidden = false
          bachelor.isHidden = false
          master.isHidden = false
       } else {
           associate.isHidden = true
           bachelor.isHidden = true
           master.isHidden = true
       }
    }
    

    然后在 viewDidLoad() func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)