调用 popViewController 时是不是可以跳过几个控制器并到达根视图控制器?

Posted

技术标签:

【中文标题】调用 popViewController 时是不是可以跳过几个控制器并到达根视图控制器?【英文标题】:Possibility to skip few controllers while invoking popViewController, and reaching root view controller?调用 popViewController 时是否可以跳过几个控制器并到达根视图控制器? 【发布时间】:2014-07-15 10:59:13 【问题描述】:

我有以下结构:

    window-> root_view_Controller = NavigationController->InitWithRoot->UITabViewController。 UITabViewController 有两个 Tabs First Table View Controller 的 UIView 有一个注册按钮。

    点击“按钮”

    click_On_Button_In_TabView -> 推送第一个视图控制器 -> Click_On_Button_In_FirstView_Controller -> 推送第二个视图控制器。

问题:

5- 现在,我想从 Second View Controller 跳转到 TabViewController。 换句话说,

 'back' button on Second View controller should skip First View Controller and display
  the tab bar controller [ ie: Window Root View Controller ] .

下面是正确的方法吗?

我想到实现第二个视图控制器的委托方法的一种方法 在第一个视图控制器上调用,第一个视图控制器立即从 viewDidAppear,但我不确定这是否正确?

【问题讨论】:

取决于知识和责任的分配,所以你需要多说一下你的委托协议和关系。你可以使用popToRootViewControllerAnimated: 【参考方案1】:

好的,

我找到了解决办法。

1) 我无法使用默认的“后退”按钮导航到根视图控制器。

而是引入一个新的Left Bar Button Item,在ViewDidLoad中,就可以了

使用下面的行:

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:self action:@selector(popToRootViewController:)];

【讨论】:

【参考方案2】:

让你的后退按钮执行这个方法:

[self popToRootViewControllerAnimated:YES];

【讨论】:

以上是关于调用 popViewController 时是不是可以跳过几个控制器并到达根视图控制器?的主要内容,如果未能解决你的问题,请参考以下文章

popviewcontroller 没有调用 viewWillappear

popViewController(animated: true) 动画运行缓慢

应该从父 ViewController 还是子 ViewController 调用 popViewController?

SwiftUI - SwiftUI 中是不是有等效的 popViewController?

PopViewController 正在占用内存

在 iOS 7 中打开 popviewcontroller 时出错