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

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

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

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

  • viewDidLoad
  • viewWillAppear
  • viewWillLayoutSubviews

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

谢谢

【问题讨论】:

    标签: ios uiview uiviewcontroller subviews


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2011-11-14
        • 1970-01-01
        • 2011-08-22
        • 2017-09-25
        • 1970-01-01
        • 1970-01-01
        • 2014-11-06
        • 1970-01-01
        • 2019-03-07
        相关资源
        最近更新 更多