0

我目前正在使用本指南,以便可以用另一个视图控制器替换根控制器。 http://starterstep.wordpress.com/2009/03/05/changeing-a-uinavigationcontroller%E2%80%99s-root-view-controller/

目前,我已经在我的应用程序中得到了它。

考虑以下场景,View A (root) -> View B

在视图 B 上,有一个名为 firstLine 的布尔值(在 viewDidLoad 中设置为 YES),用于解析算法。当我们第一次进入视图时,该算法完美运行。(视图 A -> 视图 B)

然而,这个新场景破坏了我的解析算法,

视图 A -> 视图 B(按回)-> 视图 A -> 视图 B(中断)

这就是布尔值(firstLine)在我们第一次进入视图时被设置为 YES 时奇怪地交替的地方。我开始相信第一个视图 B 仍在后台运行;因此,我尝试了 popViewController 但这并没有真正起作用。它给了我一个黑屏,这显然是我不想要的。

有任何想法吗?

编辑:已解决

Turns out I was using an NSTimer and that kept on going off on its own. Therefore, I had to invalidate it when I left the view.

4

2 回答 2

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"

您在新堆栈中的最后一个视图控制器将是顶部的!

于 2013-02-21T23:45:15.167 回答
0

查看此问题的答案了解 iOS UIViewController 生命周期 这将帮助您确定何时在视图中设置标志以及从一个 UIView 到另一个 UIView 会发生什么。

于 2013-02-21T23:08:29.877 回答