我目前正在使用这个指南,这样我就可以用另一个视图控制器替换根控制器了。http://starterstep.wordpress.com/2009/03/05/changing-a-uinavigationcontroller%E2%80%99s-root-view-controller/
目前,我已经在我的应用程序中记下了这一点。
考虑以下场景,查看A(根) ->视图B
在视图B中,有一个名为firstLine (在viewDidLoad中设置为YES )的布尔值,用于解析算法。当我们第一次进入视图时,该算法工作得很好。( ->视图B)
然而,这个新场景破坏了我的解析算法,
查看A ->视图B(按下) ->视图A ->视图B(中断)
当我们第一次进入视图时,布尔值(firstLine)应该设置为YES,这是一个奇怪的交替。我开始相信第一个视图B仍然在后台运行;因此,我尝试了popViewController,但这并没有真正起作用。它给了我一个黑色的屏幕,这显然是我不想要的。
有什么想法吗?
编辑:已解决的
原来我使用的是一个NSTimer,它一直在自己运行。因此,当我离开视图时,我不得不使它失效。
发布于 2013-02-21 23:08:29
看看这个问题的答案,Looking to understand the iOS UIViewController lifecycle,这将帮助您确定何时在您的视图中设置您的标志,以及从一个UIView到另一个UIView发生了什么。
发布于 2013-02-21 23:45:15
[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"您在新堆栈中的最后一个视图控制器将是顶部的!
https://stackoverflow.com/questions/15013577
复制相似问题