UINavigationController FUNKY

时间:2013-02-21 22:38:07

标签: objective-c uiviewcontroller uinavigationcontroller

我目前正在使用本指南,以便我可以用另一个视图控制器替换根控制器。 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,而且它一直在继续。因此,当我离开视图时,我不得不使它无效。

2 个答案:

答案 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"

新堆栈中的最后一个视图控制器将是最重要的!

相关问题