我有一个应用,其中有超过10个ViewControllers
,并且有一个MenuViewController
由ViewControllers
触发。并MenuViewController
触发所有ViewControllers
。因此,在应用程序中,我不会解除Segue,而是继续触发segues。
方案:
它是否会产生任何副作用,如内存不足或应用程序悬挂类型? 如果我继续触发segues而不解开它们会不会很好?
问题2是
当我触发
时
VC1
至MenuVC
menuVC
至VC1
VC1
至MENUVC
menuVC
至VC1
现在我将从vc1触发一个segue到vc2 segue打开两次,因为Segue树中有两个vc1 它的问题
有人请帮忙???
我的故事板图片
答案 0 :(得分:1)
如果您继续在导航堆栈上推送新的视图控制器而不删除以前的视图控制器,则最终会耗尽内存。如果您永远不想回弹到以前的视图控制器,则可以在每个视图控制器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];
}
E.g。您的应用代理可以是导航控制器的delegate
。