2017-07-28 69 views
0

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

@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 
     } 
     } 
+3

你看到的第一次敲击从'打印(timePicker.isHidden)'调试控制台的任何输出? – DonMag

+0

是的,我是。拾取器被隐藏,但控制台说错误...然后当拾取器出现时在第二次敲击时为真。 –

+0

@JWHall ^所以,这很有趣。我们来评估一下。它看起来像按钮工作正常......你在哪里/最初如何将'timePicker'设置为隐藏? –

回答

0

我的猜测是你的timePicker坐在你的timeViewtimeView内最初是隐藏的,但你的timePicker不,那是什么导致你的问题。

如果是的话,你很可能只是通过你的判断断if/elsetimeView的解决这个问题,然后你甚至不必担心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 
     } 
    } 
+0

感谢William!这固定了它。是我的逻辑问题,我试图做两件事情与其他块一样,我试图做一件事在另一个或其他完全? –

+0

不会。你的问题是你试图判断'timePicker'是否隐藏,但是'timePicker'从来不会被隐藏起来......只有它所在的视图被隐藏 - 'timeView' –

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 
     } 
    } 
+0

这里的timePicker弹出来。但其他条件永远不会启动,所以我不能在第二次按下时隐藏它。 –

+0

这只是一个热修复。你需要探索为什么'timepicker.isHidden'第一次打印错误,当你似乎相信它已经被隐藏了 –

+0

所以我更新了else块 –