我目前正在使用本指南,以便我可以用另一个视图控制器替换根控制器。 http://starterstep.wordpress.com/2009/03/05/changing-a-uinavigationcontroller%E2%80%99s-root-view-controller/
目前,我的应用已经减少了。
考虑以下场景,View A(root) - >查看B
在视图B上,有一个名为firstLine的布尔值(在viewDidLoad中设置为YES),用于解析算法。当我们第一次进入视图时,该算法非常有效。 (查看A - >查看B)
然而,这个新场景打破了我的解析算法
查看A - >视图B(向后压) - >查看A - >查看B(休息)
当我们第一次进入视图时假设设置为YES时,这是布尔值(firstLine)交替奇怪的地方。我开始相信第一个视图B仍然在后台运行;因此,我尝试了popViewController,但这并没有真正起作用。它给了我一个黑屏,这显然是我不想要的。
有什么想法吗?
编辑:已解决
原来我使用的是NSTimer,而且它一直在继续。因此,当我离开视图时,我不得不使它无效。
答案 0 :(得分:0)
查看此问题的答案Looking to understand the iOS UIViewController lifecycle 这将帮助您确定何时在您的视图中设置标记以及从一个UIView到另一个UIView会发生什么。
答案 1 :(得分:0)
[self.navigationController setViewControllers:myPreparedNewVCsStack
animated:YES];
您可以过滤,移动和替换任何视图控制器:
NSMutableArray *tempStack = [NSMutableArray arrayWithArray:self.navigationController.viewControllers];
[tempStack filterUsingPredicate:[NSPredicate predicateWithFormat:@"class != %@", [AViewController class]]]; // the predicate can be even @"firstEnter == YES"
新堆栈中的最后一个视图控制器将是最重要的!