【问题标题】:Objective c handle adding child view controller or remove from parentObjective c 处理添加子视图控制器或从父视图控制器中删除
【发布时间】:2016-09-20 12:21:08
【问题描述】:

我有一个关于 UIViewController 的小问题。

是否可以在自定义 UIViewController 类中处理将控制器添加到当前视图控制器时使用

[self addChildViewController:customViewController];

或删除时

[customViewController removeFromParentViewController];

目前,我已经使用 viewDidLoad 和 dealloc 方法完成了我想做的事情,但我想知道是否有更好的解决方案。

谢谢,

【问题讨论】:

  • 使用 arc 不要手动释放 ..
  • 我不想手动dealloc,我不想在对象释放之前执行一个动作..
  • 如何在您的 customViewController 上使用 willAppear 和 willDisappear 执行您的方法?你也可以检查 didMoveToParentViewController
  • 我同意@Teffi 的观点,在大多数情况下您可能只使用 viewWillAppear/Disappear。我通常在 viewDidLoad 中加载静态内容(初始化、格式化和连接视图),在必要时在 viewWillAppear 中加载动态内容(数据初始化)。

标签: objective-c memory-management uiviewcontroller viewdidload dealloc


【解决方案1】:

当您的视图控制器想要对添加到容器中做出反应时,它可以覆盖此方法。

- (void)didMoveToParentViewController:(UIViewController *)parent;

Apple doc

如果你正在实现自己的容器视图控制器,它必须 调用子视图的 didMoveToParentViewController: 方法 完成向新控制器的转换后的控制器,或者, 如果没有转换,则在调用 addChildViewController:方法。

dealloc 的相关性(无论如何不鼓励)是Apple doc

- (void)willMoveToParentViewController:(UIViewController *)parent;

如果你正在实现自己的容器视图控制器,它必须 调用子视图的 willMoveToParentViewController: 方法 在调用 removeFromParentViewController 方法之前的控制器, 传入 nil 的父值。

【讨论】:

    猜你喜欢
    • 2013-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多