IOS在ViewController中以编程方式删除子视图的位置

Posted

技术标签:

【中文标题】IOS在ViewController中以编程方式删除子视图的位置【英文标题】:IOS where to remove subviews programmatically in ViewController 【发布时间】:2014-04-20 22:53:04 【问题描述】:

我对 ios 很陌生,所以如果我的问题很明显,我很抱歉。 我在包含其他子视图的故事板中设置了一个 ViewController 的视图。

viewWillAppear 中,我根据传递给此 ViewController 的对象更新这些子视图。这个对象可以有 nil 属性,在这种情况下我想删除这些子视图。

移除这些子视图的正确位置是什么?在效率方面是否存在差异?

viewDidLoad viewWillAppearviewWillLayoutSubviews

对这些被移除对象设置的约束也会被移除吗?

谢谢

【问题讨论】:

【参考方案1】:

这些限制肯定会被移除。但是,可以将约束保存在数组中并在将来再次添加它们。

我建议在 viewWillLayoutSubviews 方法中更改视图(方向、可见性、几何)。您不希望在 ViewWillAppear 方法中做任何昂贵的事情,因为此时视图已准备好向用户显示,它可能会影响视图为用户加载的速度。

【讨论】:

【参考方案2】:

如果您正在使用 Storyboard 和 ARC,请不要担心删除视图,相反,如果您非常有兴趣将内存置于非常严格的控制之下,则不要使用 Storyboard 并删除 ARC。

你所说的子视图不是子视图,你列出的方法不是 UIView 方法,而是 UIViewController 方法。但是,如果您有尝试删除的 UIView 对象,那么这些对象也会为您处理。如果您想要更严格的控制,则将它们声明为公共 ivars,将它们包装在 @autoreleasepool 中,并在 viewWillDisappear: 或其他方法中设置为零,或者通过委托或通知模式。这与您正在做的事情和您的条件有关。

【讨论】:

以上是关于IOS在ViewController中以编程方式删除子视图的位置的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 10 + Swift 3 中以编程方式在我的 WKWebView 上方添加 UILabel

如何在 ios 应用程序中以编程方式移动到第二个视图?

在 Swift 中以编程方式返回到以前的 ViewController

以编程方式将 UISearchBar 添加到普通 ViewController 中以编程方式添加的 UITableView

在具有多个故事板的应用程序中以编程方式从 Storyboard 加载 ViewController

如何在视图控制器中以编程方式切换视图? (Xcode,iPhone)