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

  • 回答 (2)
  • 关注 (0)
  • 查看 (68)

所以,我从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,以及我做的方式是否可靠?

咕噜sasa咕噜sasa提问于
名字真难选a梦想成为一个有趣的人回答于
已采纳

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

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

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

心愿回答于

Swift版本:

var rootViewController = self.navigationController?.viewControllers.first

ObjectiveC版本:

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

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

所属标签

可能回答问题的人

  • 应用案例分享

    1 粉丝490 提问5 回答
  • Hyman.W

    15 粉丝0 提问3 回答
  • 桑先生

    14 粉丝0 提问3 回答
  • 找虫虫

    5 粉丝0 提问3 回答

扫码关注云+社区

领取腾讯云代金券