尝试修复一个非常奇怪的错误,我有3个视图控制器从应用程序委托开始并相应地推送。然后第三个视图控制器有一个工具栏按钮,在这里调用代码:
-(void)showEventBrowser;
{
accelManeger.delegate = nil;
NSLog(@"%u",[self.navigationController.viewControllers count]);
[self.navigationController popToRootViewControllerAnimated:NO];
}
这是第一次工作,但当我回到这个视图控制器并再试一次。首先,它报告堆栈上有3个视图控制器。然后它会释放堆栈中的第二个视图控制器并且不会崩溃,但不会再进一步。如果我再次点击该按钮,它表示堆栈中没有视图控制器并且无法响应。
我有每个视图控制器中所有viewdid,viewwill,e.t.c的日志,似乎没有奇怪的行为。任何视图控制器也没有内存警告。
为什么这会一次通过而不是第二次?
答案 0 :(得分:1)
我确定了这个。
我试图从一个没有视图但只显示UIImagepickercontroller的viewcontroller中的poptorootviewcontroller。即使在尝试首先解散这个模态视图控制器时(即使有延迟),我仍然遇到同样的问题。我改为将有问题的viewcontroller更改为UIMagepickercontroller子类,并在另一个viewcontroller中处理当前和dismiss。
经验教训,不要使用UIImagepickercontroller模态视图弹出到root。