必须按两次才能进行 Swift 3 按钮操作
Posted
技术标签:
【中文标题】必须按两次才能进行 Swift 3 按钮操作【英文标题】:Have to press twice for Swift 3 button action 【发布时间】:2017-07-28 20:28:22 【问题描述】:我有两个单选按钮,每个按钮都有自己的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
【问题讨论】:
第一次点击时,您是否在调试控制台中看到来自print(timePicker.isHidden)
的任何输出?
是的,我是。拾取器是隐藏的,但控制台说是假......然后在拾取器出现时的第二个水龙头上真实。 span>
@JWHall ^ 所以,这很有趣。让我们评估一下。按钮似乎工作正常...您最初在哪里/如何将timePicker
设置为隐藏?
最初,我在 viewDidLoad 的顶部执行此操作,但我删除了它,对 timePicker.isHidden 的唯一引用是作为插座,然后在 IBAction 中。
【参考方案1】:
我的猜测是您的 timePicker
位于您的 timeView
内,而 timeView
最初是隐藏的,但您的 timePicker
不是,这就是导致您的问题的原因。
如果是这样,您可以通过判断您的if/else
与您的timeView
来解决此问题,然后您甚至不必担心将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
【讨论】:
谢谢威廉!这解决了它。我的逻辑问题是我试图用同一个 else 块做两件事,是我试图在另一件事中做一件事,还是完全是别的事情? 没有。您的问题是您试图判断timePicker
是否隐藏,但 timePicker
最初从未隐藏...只有它所在的视图被隐藏 - timeView
【参考方案2】:
看起来像设置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
【讨论】:
这里 timePicker 会立即弹出。但是 else 条件永远不会触发,所以我无法在第二次按下时隐藏它。 这只是一个热修复。您需要探索为什么timepicker.isHidden
第一次打印错误,而您似乎认为它已经被隐藏了以上是关于必须按两次才能进行 Swift 3 按钮操作的主要内容,如果未能解决你的问题,请参考以下文章
MS Access:需要按两次退格键才能删除从 Excel 复制过来的一个字符