解除影响应用程序的 Segue?

Unwinding a Segue effecting the app?

我有一个应用程序,其中有超过 10 个 ViewControllers,并且有一个 MenuViewController 由所有 ViewControllers 触发。并且 MenuViewController 触发全部 ViewControllers。所以在应用程序中,我不会解除 Segue,而是继续触发 segue。

方案:

它会产生内存不足或应用程序挂起之类的副作用吗? 如果我在不展开它们的情况下继续触发 segues 会好吗?

问题 2 是

当我触发

VC1 to MenuVC

menuVC to VC1

VC1 to MENUVC

menuVC to VC1

现在我将触发从 vc1 到 vc2 的转场 并且 segue 打开两次,因为 Segue 树中存在两个 vc1 问题所在

有人请帮助 ???

我的故事板图片

如果您不断在导航堆栈上推送新的视图控制器而不删除之前的视图控制器,您最终会 运行 内存不足。如果您不想返回到之前的视图控制器,则可以在每个视图控制器中的推送转换完成后删除完整的导航历史记录 viewDidAppear::

- (void)viewDidAppear {
    [super viewDidAppear];
    self.navigationController.viewControllers = @[self];
}

或者,您可以通过设置导航控制器的 delegate 并实施 navigationController:didShowViewController:animated::

将此逻辑放在中心位置
- (void)navigationController:(UINavigationController *)navigationController
       didShowViewController:(UIViewController *)viewController
                    animated:(BOOL)animated {
    navigationController.viewControllers = @[navigationController.viewControllers.lastObject];
}

例如您的应用委托可能是导航控制器的 delegate