1

在调用 popToRootViewControllerAnimated 方法之前将数据发送回根视图控制器的最佳方法是什么?我试图向 rootviewcontroller 发出当前视图控制器不再存在的信号,并记录通过 segue 推送的视图控制器。

4

3 回答 3

7

您不能等到当前视图控制器“不再存在”。虽然当前视图控制器确实存在,但根视图控制器是当前视图控制器的navigationController.viewControllers[0]. 所以你有你需要的参考从这个发送消息到那个。只需转换到根视图控制器的类,现在您可以在根视图控制器中调用任何公共方法,例如

MyRootViewController* rvc = (MyRootViewController*)(self.navigationController.viewControllers[0]);
rvc.coolData = myCoolData;
于 2013-03-05T21:26:09.380 回答
2

有两种基本方法可以做到这一点:1)使用 NSNotification 消息或 2)使用委托调用。有很多关于如何编码两者的教程。我写了一个小的委托教程作为这个问题的答案:iPhone 应用程序中的后退按钮,您可以在这里找到一个很棒的 NSNotification 教程:通过 Objective-C 中的 NSNotificationCenter 发送和接收消息?

于 2013-03-05T21:20:06.197 回答
1

您可以继承 UINavigationController 并覆盖必要的方法来跟踪您的数组。我建议为从堆栈中弹出的每个视图控制器保留一组唯一的标题。至于向当前视图控制器发出前一个视图控制器不存在的信号,这就是-viewWillAppear目的。如果您需要更细粒度的控制,请为您的视图控制器实例创建一个协议,以符合导航控制器从堆栈中弹出一个或多个实例时调用的协议。

于 2013-03-05T21:20:54.147 回答