使用子视图删除vs ishidden有什么区别?我需要一个用户无法访问的按钮。哪个更好,更安全,以确保用户无权访问该按钮?这两种方法有什么区别,除了这里提到的这两种方法之外,还有更好的方法吗?
答案 0 :(得分:2)
简单的等式是&#34;如果您以后不需要View / SubView,只需执行 removeFromSuperView ,否则隐藏和< strong>显示 View / SubView。&#34;
哪一个更好?取决于您的要求。在大多数情况下,最好隐藏视图,如果需要在某些事件发生时再次显示。
在这里你可以看出差异:
<强>是否隐藏:强>
隐藏视图从窗口消失,不接收输入 事件。但是,它仍保留在超级视图的子视图列表中 像往常一样参与自动化。用子视图隐藏视图 隐藏这些子视图和任何视图后代的效果 可能有。这种效果是隐含的,不会改变隐藏的 接收者后代的状态。隐藏视图即是 窗口的当前第一响应者导致视图的下一个有效键视图 成为新的第一响应者。
<强> removeFromSuperView:强>
取消链接视图与其超级视图及其窗口,并将其删除 来自响应者链。如果视图的superview不是nil,那么 superview发布视图。调用此方法将删除任何 引用要删除或引用的视图的约束 您要删除的视图子树中的任何视图。
答案 1 :(得分:0)
isHidden
只会隐藏按钮,并在必要时显示。如果您使用remove from subView
,那么您实际上是从内存中删除它。在这种情况下,当您想要显示该按钮时,您必须实例化或创建一个新按钮。为了使其不可访问,您还可以将isEnabled
属性设置为false。这样就会显示按钮但不可用。