Ishidden vs从子视图中删除

时间:2017-05-31 03:45:10

标签: ios

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

2 个答案:

答案 0 :(得分:2)

简单的等式是&#34;如果您以后不需要View / SubView,只需执行 removeFromSuperView ,否则隐藏和< strong>显示 View / SubView。&#34;

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

在这里你可以看出差异:

<强>是否隐藏:

  

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

<强> removeFromSuperView:

  

取消链接视图与其超级视图及其窗口,并将其删除   来自响应者链。如果视图的superview不是nil,那么   superview发布视图。调用此方法将删除任何   引用要删除或引用的视图的约束   您要删除的视图子树中的任何视图。

答案 1 :(得分:0)

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