必须按两次Swift 3按钮动作

时间:2017-07-28 20:28:23

标签: ios button swift3

我有两个单选按钮,每个按钮都有自己的IBAction。第一个表现完美无瑕。第二个具有if-else条件,并且不响应第一次敲击,但随后响应每个敲击。通过查看类似的问题,我感觉第一次点击只是在执行操作之前评估我的功能,但我无法找到一种方法让按钮在第一次点击时响应。

@IBAction func radioSchedule(_ sender: Any) {
         print(timePicker.isHidden)

        if timePicker.isHidden == true {

            timePicker.isHidden = false
            hideButton.isHidden = true
            timeView.isHidden = false
            itemTypeField.text = "Schedule"
            saveButton.isHidden = false

        } else {
            timePicker.isHidden = true
            timeView.isHidden = true
        }
        }

2 个答案:

答案 0 :(得分:0)

看起来设置timepicker.ishidden正在创建问题,修改代码如下: -

@IBAction func radioSchedule(_ sender: Any) {
  print(timePicker.isHidden)
  //Here updating the isHidden property first. If its false then initially will set to true.
  timePicker.isHidden = !timePicker.isHidden
  if timePicker.isHidden == true {
    hideButton.isHidden = true
    timeView.isHidden = false
    itemTypeField.text = "Schedule"
    saveButton.isHidden = false
   } else {
        timeView.isHidden = true
      }
  }

答案 1 :(得分:0)

我的猜测是timePicker位于timeView内,而timeView最初是隐藏的,但timePicker不是,这就是造成问题的原因。

如果是这样,您可以通过仅仅判断if/else timeView的{​​{1}}来解决此问题,然后您甚至不必担心将timePicker设置为隐藏或不。

即:

@IBAction func radioSchedule(_ sender: Any) {

        print(timeView.isHidden)

        if timeView.isHidden {

            hideButton.isHidden = true
            timeView.isHidden = false
            itemTypeField.text = "Schedule"
            saveButton.isHidden = false

        } else {
            timeView.isHidden = true
        }
  }