我有一个根视图控制器,它的子类UINavigationController
。它加载在一个UIButton
的子视图中。当按下该按钮时,我想在子控制器中从子视图的相应视图控制器(允许说ChildViewController
)到UINavigationController
的pushViewController:
方法进行调用。从子控制器函数调用pushViewController
这是如何不直接引用父视图控制器?它是使用标准协议方法实现还是必须创建自己的?
我有一个根视图控制器,它的子类UINavigationController
。它加载在一个UIButton
的子视图中。当按下该按钮时,我想在子控制器中从子视图的相应视图控制器(允许说ChildViewController
)到UINavigationController
的pushViewController:
方法进行调用。从子控制器函数调用pushViewController
这是如何不直接引用父视图控制器?它是使用标准协议方法实现还是必须创建自己的?
孩子UIViewController
包含你的孩子UIView
和UIButton
应该有parentViewController
财产。您可以使用它来获得对您的UINavigationController
的弱引用,您可以在其中发送信息pushViewController:animated:
我知道这篇文章很旧,但我遇到了类似的问题。你能扩展这个答案吗?我无法弄清楚如何获得参考。我在自定义单元格中有一个按钮,并想呈现一个UIActivityViewController。你如何使用parentViewController属性。谢谢你的时间。 – Douglas
每个UIViewController都有一个名为navigationController的属性。如果一个UIViewController是一个UINavigationController堆栈的一部分,您可以通过以下方式使用navigationController属性:
[self.navigationController pushViewController:yourNextViewController animated:YES];
有没有需要访问RootViewController的唯一堆栈上推一个新视图控制器。如果你有大的导航堆栈,这可能会变得非常糟糕。
顺便说一下 - 苹果states UINavigationController不打算用于子类。通常,倾听他们的警告和指示是一个好主意,因此您可能需要再次重访子类方法。 使用加载到UINavigationController堆栈的子类UIViewController可能证明是一种更好的方法。
希望这会有所帮助。
是'navigationController'属性的一个选项吗? – Jumhyn