首页 > 解决方案 > iOS Swift:如何在 UIViewController 中隐藏和显示按钮

问题描述

我有一个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 button在启动时或clear按下“”按钮后出现“”……直到使用下一个过滤器。

我通常只是将 a 链接IBOutlet到一个按钮,isHidden如果我想hide/unhide在不同的地方设置它的属性。但是我似乎无法做到这一点,因为我收到一个错误:

invalid repeating content' when I link a IBOutlet to the 'clear' button in the header

我尝试创建一个子类UICollectionViewCellIBOutlet从那里创建。效果很好,我可以链接到按钮(我尝试了所有 3 个或只是 ' clear button' 的组合。但是,' filter' 和 ' back' 按钮的 segues 不再被触发。

我正在寻找一种方法来隐藏/取消隐藏“清除”按钮,同时保持 segue/dismiss 触发器仍然有效。

我将不胜感激朝正确的方向戳。

注意:我没有包含任何代码,因为没有什么特别的UICollectionView

标签: iosswiftxcodeuicollectionview

解决方案


您可以访问UIButtonviewWithTag()更改它的.isHidden属性。请记住在情节提要中设置标签。

view.viewWithTag(insertYourTagHere).isHidden = false

老实说,添加 IBOutltes 会更好。


推荐阅读