解除影响应用程序的 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
。
我有一个应用程序,其中有超过 10 个 ViewControllers
,并且有一个 MenuViewController
由所有 ViewControllers
触发。并且 MenuViewController
触发全部 ViewControllers
。所以在应用程序中,我不会解除 Segue,而是继续触发 segue。
方案:
它会产生内存不足或应用程序挂起之类的副作用吗? 如果我在不展开它们的情况下继续触发 segues 会好吗?
问题 2 是
当我触发
VC1
toMenuVC
menuVC
toVC1
VC1
toMENUVC
menuVC
toVC1
现在我将触发从 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
。