我试图在另一个视图以模态方式呈现后立即显示一个模态视图(第二个是出现的加载视图)。
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
// Show load
LoadViewController *loader = [[LoadViewController alloc] init];
[self presentModalViewController: loader animated:NO];
[loader release];
}
但是当我这样做时,我会收到一个“Program received signal: "EXC_BAD_ACCESS"。”的错误。
堆栈跟踪如下:
0 0x30b43234 in -[UIWindowController transitionViewDidComplete:fromView:toView:]
1 0x3095828e in -[UITransitionView notifyDidCompleteTransition:]
2 0x3091af0d in -[UIViewAnimationState sendDelegateAnimationDidStop:finished:]
3 0x3091ad7c in -[UIViewAnimationState animationDidStop:finished:]
4 0x0051e331 in run_animation_callbacks
5 0x0051e109 in CA::timer_callback
6 0x302454a0 in CFRunLoopRunSpecific
7 0x30244628 in CFRunLoopRunInMode
8 0x32044c31 in GSEventRunModal
9 0x32044cf6 in GSEventRun
10 0x309021ee in UIApplicationMain
11 0x00002154 in main at main.m:14
有什么想法吗?我完全被卡住了!加载视图为空,所以肯定没有任何操作会导致错误。是因为在同一事件循环中模态地启动了两个视图还是其他原因呢?
谢谢,
迈克
编辑:非常奇怪......我稍微修改了一下,让加载视图在微小的延迟后显示,这个方法可以正常工作!所以它似乎是在同一事件循环中的某些问题!
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
// Show load
[self performSelector:@selector(doit) withObject:nil afterDelay:0.1];
}
- (void)doit {
[self presentModalViewController:loader animated:YES];
}
loader
放入自动释放池中。我认为loader
消失得太快了,可能是因为当前的视图控制器必须为新的视图和视图控制器让路。其他想法:使用调试器并观察loader
。如果它是引起问题的原因,你会通过这种方式发现它。如果不是,请继续在调试器中探索,你可能会找到答案。 - Gordon Seidoh Worley