我想关闭我当前的视图控制器并转到下一页?
即关闭当前视图控制器并将另一个视图控制器推入堆栈。
我可以使用以下代码关闭当前页面
[[self navigationController] popViewControllerAnimated: YES];
Run Code Online (Sandbox Code Playgroud)
但是在这之后打开一个新的控制器是行不通的。
同时在 self 上调用 push 和 pop 将不起作用,因为 self 已经被删除。您需要处理视图控制器堆栈 -
UINavigationController *navigationController = self.navigationController;
NSMutableArray *activeViewControllers=[[NSMutableArray alloc] initWithArray: navigationController.viewControllers] ;
[activeViewControllers removeLastObject];
// Reset the navigation stack
[navigationController setViewControllers:activeViewControllers];
[navigationController pushViewController:yourViewController animated:YES];
Run Code Online (Sandbox Code Playgroud)
除此之外,如果您不想要这个视图控制器,当从您的新视图控制器弹出时,您还有其他选项可用。
喜欢firstVC-> secondVC->thirdVC
现在从thirdVC如果你直接想来firstVC(跳过 secondVC,我相信这就是你想要 push 和 pop 的原因)。然后为此您可以使用 - popToViewController。
[self.navigationController popToViewController:firstVC animated:YES];
Run Code Online (Sandbox Code Playgroud)
刚刚检查了同一主题已经有几个问题,您也可以参考这些问题以获得好的意见和答案-
如何在一次操作中从 UINavigationController 弹出视图并将其替换为另一个视图?
如何弹出一个viewController,然后通过委托推送一个viewController
| 归档时间: |
|
| 查看次数: |
5174 次 |
| 最近记录: |