PoptorootViewController失败然后删除所有Viewcontrollers

时间:2010-04-02 10:15:35

标签: iphone uiviewcontroller

尝试修复一个非常奇怪的错误,我有3个视图控制器从应用程序委托开始并相应地推送。然后第三个视图控制器有一个工具栏按钮,在这里调用代码:

-(void)showEventBrowser;
{ 
 accelManeger.delegate = nil;
 NSLog(@"%u",[self.navigationController.viewControllers count]);
 [self.navigationController popToRootViewControllerAnimated:NO];
}

这是第一次工作,但当我回到这个视图控制器并再试一次。首先,它报告堆栈上有3个视图控制器。然后它会释放堆栈中的第二个视图控制器并且不会崩溃,但不会再进一步​​。如果我再次点击该按钮,它表示堆栈中没有视图控制器并且无法响应。

我有每个视图控制器中所有viewdid,viewwill,e.t.c的日志,似乎没有奇怪的行为。任何视图控制器也没有内存警告。

为什么这会一次通过而不是第二次?

1 个答案:

答案 0 :(得分:1)

我确定了这个。

我试图从一个没有视图但只显示UIImagepickercontroller的viewcontroller中的poptorootviewcontroller。即使在尝试首先解散这个模态视图控制器时(即使有延迟),我仍然遇到同样的问题。我改为将有问题的viewcontroller更改为UIMagepickercontroller子类,并在另一个viewcontroller中处理当前和dismiss。

经验教训,不要使用UIImagepickercontroller模态视图弹出到root。