2011-09-20 68 views
1

我有一个根视图控制器,它的子类UINavigationController。它加载在一个UIButton的子视图中。当按下该按钮时,我想在子控制器中从子视图的相应视图控制器(允许说ChildViewController)到UINavigationControllerpushViewController:方法进行调用。从子控制器函数调用pushViewController

这是如何不直接引用父视图控制器?它是使用标准协议方法实现还是必须创建自己的?

+2

是'navigationController'属性的一个选项吗? – Jumhyn

回答

0

孩子UIViewController包含你的孩子UIViewUIButton应该有parentViewController财产。您可以使用它来获得对您的UINavigationController的弱引用,您可以在其中发送信息pushViewController:animated:

+0

我知道这篇文章很旧,但我遇到了类似的问题。你能扩展这个答案吗?我无法弄清楚如何获得参考。我在自定义单元格中有一个按钮,并想呈现一个UIActivityViewController。你如何使用parentViewController属性。谢谢你的时间。 – Douglas

3

每个UIViewController都有一个名为navigationController的属性。如果一个UIViewController是一个UINavigationController堆栈的一部分,您可以通过以下方式使用navigationController属性:

[self.navigationController pushViewController:yourNextViewController animated:YES]; 

有没有需要访问RootViewController的唯一堆栈上推一个新视图控制器。如果你有大的导航堆栈,这可能会变得非常糟糕。

顺便说一下 - 苹果states UINavigationController不打算用于子类。通常,倾听他们的警告和指示是一个好主意,因此您可能需要再次重访子类方法。 使用加载到UINavigationController堆栈的子类UIViewController可能证明是一种更好的方法。

希望这会有所帮助。

相关问题