在调用popToRootViewControllerAnimated方法之前,将数据发送回根视图控制器的最佳方法是什么?我试图向rootviewcontroller发出信号,表示当前的viewcontroller不再存在,并记录了通过segue推送了什么viewcontroller。
答案 0 :(得分:7)
您不能等到当前视图控制器“不再存在”。当前视图控制器确实存在时,根视图控制器是当前视图控制器的navigationController.viewControllers[0]
。因此,您需要将此消息从该消息发送到该消息。只需转换为根视图控制器的类,现在可以调用根视图控制器中的任何公共方法,例如。
MyRootViewController* rvc = (MyRootViewController*)(self.navigationController.viewControllers[0]);
rvc.coolData = myCoolData;
答案 1 :(得分:2)
有两种基本方法可以做到这一点:1)使用NSNotification消息或2)使用委托调用。有很多关于如何编码的教程。我写了一个小代表教程作为这个问题的答案:Back button in iphone app你可以在这里找到一个很棒的NSNotification教程:Send and receive messages through NSNotificationCenter in Objective-C?
答案 2 :(得分:1)
您可以继承UINavigationController并覆盖跟踪数组的必要方法。我建议为从堆栈弹出的每个视图控制器保留一组唯一的标题。至于向当前视图控制器发信号通知先前的视图控制器不存在,那就是-viewWillAppear
的用途。如果需要更精细的控制,请为View Controller实例创建一个协议,使其符合导航控制器在将其中一个或多个弹出窗口时调用的协议。