所以,我从 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/