我有一个子视图控制器,它是UINavigationController
的子类。它使用UIButton
加载到子视图中。当按下该按钮时,我想从子视图的相应视图控制器(例如ChildViewController
)调用父控制器中的UINavigationController
的{{1}}方法。
如果不直接引用父视图控制器,这怎么可能?是否可以使用标准协议方法实现,还是必须自己创建?
答案 0 :(得分:3)
每个UIViewController都有一个名为navigationController的属性。如果UIViewController是UINavigationController堆栈的一部分,您可以通过以下方式使用navigationController属性:
[self.navigationController pushViewController:yourNextViewController animated:YES];
只需要在堆栈上推送新的ViewController就不需要访问rootViewController。如果你有大的导航堆栈,这可能会非常糟糕。
顺便说一句 - Apple states UINavigationController不用于子类化。通常,听取他们的警告和指示是个好主意,所以你可能想再次重新审视子类化方法。 使用加载到UINavigationController堆栈的子类UIViewController可能是一种更好的方法。
希望这有帮助。
答案 1 :(得分:0)
包含您的孩子UIViewController
和UIView
的孩子UIButton
应该拥有parentViewController
属性。您可以使用它来获取对UINavigationController
的弱引用,您可以在其中发送pushViewController:animated: