我有一个带有两个标签的tabbar控制器应用。我的一个标签使用导航控制器 我为此制作的导航控制器位于视图A中。视图A仅作为控制器,并自动按下视图B,视图B又推动视图C按下视图D.
我希望下一个视图是View B,所以我使用了
NSArray *viewControllers = [[self navigationController] viewControllers];
int i=0;
while (! [[[viewControllers objectAtIndex:i] nibName]
isEqualToString:@"ViewBController"]
&& i < [viewControllers count])
i++;
获取我想要的视图(在某些情况下,视图的顺序可能会发生变化,因此我不想对其进行硬编码) 然后
self.navigationController popToViewController:[viewControllers objectAtIndex:i] animated:NO];
返回查看B
我的问题是该应用程序此时崩溃了。从技术上讲,它在解除了View C之后崩溃了(我把nslogs放到那里来解决)。
我不知道我的问题是什么?任何人都可以提供见解吗?
编辑:我也尝试制作一个新的视图控制器,查看E,并推动它仍然崩溃
答案 0 :(得分:1)
我终于找到了我的问题,结果发现它不是导航问题。
在切换视图之前,我有一个警报,我设置为autorelease,然后我也发布了它 我通过使用NSZombie来解决这个问题,这很棒。
对于需要参考的人来说,请查看: http://cocoadev.com/index.pl?NSZombieEnabled
答案 1 :(得分:0)
首先,澄清......当你说你的导航控制器驻留在“视图A”中时,你究竟是什么意思?你的意思是它是第一个标签上包含的视图控制器吗?
到目前为止,您可能对如何使用导航控制器存在根本性的误解。它们不应该被加载,以便您可以翻转到您想要的任何一个。导航控制器中的每个视图控制器都应该是用户选择导航到的新屏幕。听起来你正试图用一堆视图控制器填充导航控制器,然后在中间推送或弹出其中一个,但这不是它的工作原理。
这是一个视频,解释了如何使用UINavigationController,也许它会有所帮助。 http://vimeo.com/2371881