2017-05-31 108 views
0

从子视图中使用remove与ishidden有什么区别?我需要一个用户无法访问的按钮。确保用户无法访问该按钮会更好,更安全?这两种方法之间有什么区别,除了这里提到的这两种方法之外,还有更好的方法吗?Ishidden vs从子视图中删除

+0

就像关键字所说的那样简单 - > #1隐藏表示视图在那里,但不会在设备的屏幕上可见。你可以通过设置它可见(isHidden = false)来显示它 #2一旦我们删除任何视图将从VC视图的子视图栈中删除 希望这可以帮助你。 谢谢 –

回答

2

简单的公式是“如果你没有需要在今后的视图/子视图,只是做removeFromSuperView否则隐藏显示视图/子视图”。

哪一个更好?取决于你的要求。在大多数情况下,最好隐藏一个View,如果需要在发生某些事件时再次显示。

在这里你去的差异:

是否隐藏:

隐藏视图从窗口消失,并且不接收输入 事件。然而,它仍然在其超级浏览的子视图列表中,并且 像往常一样参与自动调整。隐藏子视图的视图有 隐藏这些子视图和 可能具有的任何视图后代的效果。这种效果是隐含的,不会改变接收者后代的隐藏状态。隐藏视图即 窗口当前的第一响应者会导致视图的下一个有效关键视图 成为新的第一响应者。

removeFromSuperView:

从解除链接它的父和其窗口中的视图,并删除它 从响应链。如果视图的超视图不为零,则超视图会释放该视图。调用此方法将删除任何引用您要删除的视图的 约束,或删除要删除的视图的子树中的任何视图的 约束。

0

isHidden只会隐藏按钮,并可以在必要时显示。如果你使用remove from subView那么你基本上从内存中删除它。在这种情况下,当你想显示该按钮时,你将不得不实例化或创建一个新按钮。为了使其无法访问,您还可以将isEnabled属性设置为false。通过这种方式,按钮将显示,但不会使用。