如何从子视图中隐藏信息按钮?

Posted

技术标签:

【中文标题】如何从子视图中隐藏信息按钮?【英文标题】:How Can I hide an info button from a subview? 【发布时间】:2010-11-07 04:55:13 【问题描述】:

我有一个 mainViewController,在它的 nib 文件中我添加了一个信息按钮,其中的动作是在两个子视图之间翻转,子视图 A 和子视图 B。

从 mainViewController 的 viewDidLoad 下,我正在插入子视图 A。这里我注意到信息按钮在子视图 A 的前面,这很好。

问题来了,当按下位于子视图 A 的 nib 文件中的任何按钮时,它们会在其中添加新的子视图,信息按钮仍保留在前面。

那么,我怎样才能在所有父视图堆栈的前面添加这些后来的子视图,这样信息按钮就不会出现?或者如何隐藏信息按钮?

【问题讨论】:

【参考方案1】:

如果我理解正确,您的 mainViewController 的视图有两个超级视图:subView A 和 infoButton。您想向显示在 infoButton 视图上方的 subviewA 添加子视图吗?

简单的答案是您不能让 subviewA 的子视图出现在 infoButton 视图上。如果您将视图层次结构视为一棵树,则渲染器会以深度优先的方式绘制视图。这意味着它会在考虑 infoButton 视图之前绘制 subviewA 和所有 subviewA 的子视图(等等)。如果你想让一个视图出现在 infoButton 视图之上,你需要将它作为 infoButton after infoButton 的兄弟添加到主视图的子视图列表中。

如果您想隐藏 infoButton,您可以简单地将 hidden 属性设置为 YES,然后当您希望 infoButton 视图重新出现时将其设置为 NO。 p>

根据您对 subviewA 的操作,您可能会考虑使用模态视图控制器或导航控制器来管理您在用户与 subviewA 交互时添加的视图。

【讨论】:

嗨,亚当,感谢您的回复。 infoButton 是 mainViewController 视图中的一个按钮。在子视图 A 中,我试图加载一个视图,当加载时,infoButton 仍然在我刚刚加载的视图的前面。子视图 A 已经是 mainViewController 的子视图。如何隐藏信息按钮? 我认为最简单的方法就是简单地设置 infoButton 的 hidden 属性。当您将新视图添加到 subviewA 时: infoButton.hidden = YES;当您希望 infoButton 再次出现时:infoButton.hidden = NO; 好的!我们越来越近了。我确实希望 infoButton 在子视图 A 中,但不在从子视图 A 加载的子视图中。如何从后面的子视图中隐藏 infoButton? 您不一定需要从后面的子视图中隐藏 infoButton。在某些时候,您有一些代码将后面的子视图添加到 subviewA;您可以添加一行代码以相同的方法将 infoButton 视图的隐藏参数设置为 YES。同理,在移除后面的子视图的方法中,添加将 infoButton 的 hidden 属性设置为 NO 的行。 这正是我想要做的。那么从 mainViewController 加载子视图 A,我怎样才能到达子视图 A 中的 infoButton?会不会像... self.view.superview.infoButton.hidden = YES ?

以上是关于如何从子视图中隐藏信息按钮?的主要内容,如果未能解决你的问题,请参考以下文章

如何从子视图中隐藏 NavigationBar?

如何根据按下的按钮取消隐藏标记的详细信息披露按钮

使用委托从按钮传递信息以突出显示单元格

Swift UI 如何从子视图中检索状态

堆栈视图中的元素不移动/调整

如何在网格中显示列并将其隐藏在视图对话框中