所以,我从 RootViewController 推送一个 View Controller ,如:

[self.navigationController pushViewController:anotherViewController 动画:YES] ;

但是,现在从 anotherViewController 开始,我想再次访问 RootViewController。

我正在努力

//(现在在 anotherViewController 中)
///RootViewController *root = (RootViewController*)self.parentViewController ;//不。
//呃
RootViewController *root = (RootViewController*)[self.navigationController.viewControllers objectAtIndex:0] ;//是的!!有用

我不确定为什么这有效,我不确定它是否是最好的方法。有人可以评论从您插入该 RootViewController 的 navigationController 的 Controller 中获取 RootViewController 的更好方法,以及我所做的方式是否可靠?

最佳答案

使用 UINavigationController 的 viewControllers 属性。示例代码:

// Inside another ViewController
NSArray *viewControllers = self.navigationController.viewControllers;
UIViewController *rootViewController = [viewControllers objectAtIndex:viewControllers.count - 2];

这是获取“后退” View Controller 的标准方法。 objectAtIndex:0 工作的原因是因为您尝试访问的 View Controller 也是根 Controller ,如果您在导航中更深入,则后 View 将与根 View 不同。

关于ios - 如何从推送的 Controller 中获取 RootViewController?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1792858/

10-13 04:07