iOS Swift:如何在 UIViewController 中隐藏和显示按钮
Posted
技术标签:
【中文标题】iOS Swift:如何在 UIViewController 中隐藏和显示按钮【英文标题】:iOS Swift: How to hide and reveal a button in UIViewController 【发布时间】:2018-08-12 18:16:28 【问题描述】:我有一个显示主题列表的工厂UICollectionView
。
在标题中,我有 3 个按钮“filter
”、“clear
”和“back
”
这些按钮都是在storyboard
中创建的,没有链接IBOutlets
(见下文)。 “filter
”和“back
”按钮链接到 Segue/Dismiss Segue,“clear
”按钮作为链接到它的IBAction
。
“filter
”按钮会弹出另一个viewcontroller
(tableview
),用户可以在其中选择各种“filters
”,当返回collectionview
时,主题为“filtered
”。很好用。
“clear
”按钮清除已应用于视图集合的所有过滤器。按下此按钮后,所有过滤器都将被删除,viewcontroller
会重新加载。再次工作可爱。
但我希望隐藏“clear
”按钮,除非已应用过滤器。目前,“filter
”和“clear
”按钮都从一开始就显示出来。我很高兴过滤器按钮始终存在,因为我希望用户能够随时应用/调整过滤器。但我只希望在应用过滤器时显示“clear
”按钮。因此,我不希望在启动时或按下“clear
”按钮后出现“clear button
”……直到使用下一个过滤器。
我通常只是将IBOutlet
链接到一个按钮,并设置它的isHidden
属性,如果我想在各个点hide/unhide
它。但是,由于出现错误,我似乎无法做到这一点:
"invalid repeating content' when I link a IBOutlet to the 'clear' button in the header
.
我尝试创建一个子类UICollectionViewCell
并从那里创建IBOutlet
。效果很好,我可以链接到按钮(我尝试了所有 3 个或只是 'clear button
' 的组合。但是,'filter
' 和 'back
' 按钮的 segues 不再被触发。
我正在寻找一种方法来隐藏/取消隐藏“清除”按钮,同时保持 segue/dismiss 触发器仍然有效。
我将不胜感激朝正确的方向戳。
注意:我没有包含任何代码,因为 UICollectionView
没有什么特别之处
【问题讨论】:
【参考方案1】:您可以通过viewWithTag()
访问UIButton
,然后更改它的.isHidden
属性。记得在 storyboard 中设置 Tag。
view.viewWithTag(insertYourTagHere).isHidden = false
老实说,添加 IBOutltes 会好得多。
【讨论】:
非常感谢。我使用了 Tag 选项并让它工作得很好。我同意它在某些方面不是很优雅,我肯定不是最佳实践。如果有人可以就使用 IBOutlets 的“更正确(原文如此)”方法提出建议,我将不胜感激以上是关于iOS Swift:如何在 UIViewController 中隐藏和显示按钮的主要内容,如果未能解决你的问题,请参考以下文章
如何使用swift在UITableView中有UITextFields时管理键盘?
一个 UIView Swift 中的多个 TableViews - 如何同时显示