iOS:如何识别我们从Parent UIViewController中的子UIViewController回来了?

Oha*_*gev 15 iphone uiviewcontroller uinavigationcontroller popviewcontroller ios

假设我在UINavigationController中的堆栈上有2个UIViewControllers.在"父"中我们称之为"[self.navigationController pushViewController:childViewController animated:YES];" 在一些用户操作和"子"中我们调用"[self.navigationController popViewControllerAnimated:YES];" 一些用户行动.

我们怎样才能在父母中认出我们刚回来的?

是否有一些"事件"驱动的方法可以识别这个popViewControllerAnimated动作是从孩子调用的?

May*_*tin 6

看起来你正在使用这个子控制器作为模态,因为它可以被"解雇".如果是这种情况,请尝试遵循他们用于UIAlertViews的Apple模式.

如果是这种情况,我会执行以下任一操作来实现委托模式(委托vs块是一个很大的争论,我不会在这里讨论)所以所有者(推动孩子的那个)知道什么时候驳回:

  • 创建一个协议(ChildControllerDelegate),其中有一个方法childControllerWasDismissed:(ChildController*)
  • 向ChildController添加一个块属性(确保它的copy属性,而不是保留)

然后,您需要在viewDidDisappear上调用委托方法或块.如果您想要更精细的颗粒控制,请使用与viewWillDisappear/viewDidDisappear对应的委托方法或块.


Bil*_*ney 0

首先阅读本文,它将帮助您了解视图控制器发生了什么。

然后在父视图控制器中实现viewWillAppear:viewDidAppear:来记录消息。