iPhone - 导航栏应用程序崩溃

时间:2011-02-12 00:24:24

标签: iphone objective-c uinavigationcontroller crash uitabbarcontroller

我有一个带有两个标签的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,并推动它仍然崩溃

2 个答案:

答案 0 :(得分:1)

我终于找到了我的问题,结果发现它不是导航问题。

在切换视图之前,我有一个警报,我设置为autorelease,然后我也发布了它 我通过使用NSZombie来解决这个问题,这很棒。

对于需要参考的人来说,请查看: http://cocoadev.com/index.pl?NSZombieEnabled

答案 1 :(得分:0)

首先,澄清......当你说你的导航控制器驻留在“视图A”中时,你究竟是什么意思?你的意思是它是第一个标签上包含的视图控制器吗?

到目前为止,您可能对如何使用导航控制器存在根本性的误解。它们不应该被加载,以便您可以翻转到您想要的任何一个。导航控制器中的每个视图控制器都应该是用户选择导航到的新屏幕。听起来你正试图用一堆视图控制器填充导航控制器,然后在中间推送或弹出其中一个,但这不是它的工作原理。

这是一个视频,解释了如何使用UINavigationController,也许它会有所帮助。 http://vimeo.com/2371881