首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从推送的控制器获取RootViewController?

如何从推送的控制器获取RootViewController?
EN

Stack Overflow用户
提问于 2018-03-28 07:06:53
回答 2查看 0关注 0票数 0

所以,我从RootViewController中推送一个视图控制器,如下所示:

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

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

我尝试着

//(现在在另一个ViewController中)
/// RootViewController * root =(RootViewController *)self.parentViewController; //不
// 呃
RootViewController * root =(RootViewController *)[self.navigationController.viewControllers objectAtIndex:0]; // YES !! 有用

我不确定为什么这会起作用,我不确定它是否是最好的方式。有人可以评论一种更好的方式来从你推入RootViewController的navigationController的控制器获取RootViewController,以及我做的方式是否可靠?

EN

回答 2

Stack Overflow用户

发布于 2018-03-28 15:21:23

示例代码:

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

这是获得“后退”视图控制器的标准方式。原因很objectAtIndex:0有效,因为你试图访问的视图控制器也是根视图控制器,如果你在导航中更深入,后视图不会和根视图相同。

票数 0
EN

Stack Overflow用户

发布于 2018-03-28 16:08:17

Swift版本:

var rootViewController = self.navigationController?.viewControllers.first

ObjectiveC版本:

UIViewController *rootViewController = [self.navigationController.viewControllers firstObject];

self是UINavigationController中嵌入的UIViewController的一个实例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100007837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档