如果我的问题可能导致琐碎或模糊,我道歉。我正在使用模态呈现的视图。为了实现一点'scenographic'动画效果,基于参数的值,我希望达到以下行为:
如果值为0,则模态显示的视图将保持显示并允许用户操作,直到按下后退按钮(在这种情况下视图被取消)
如果值为1,则以模态方式显示视图,然后立即将其解除,并在调用视图上方显示警报视图。
现在,我试图将控件放在viewDidAppear方法中的值,在这样的模态视图控制器中
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:YES];
if (<value> == 1) {
[self dismissModalViewControllerAnimated:YES];
}
}
我得到的是: 如果值为0,则模态视图按计划保持
如果值为1,则模态视图按计划被取消,但应用程序在之后立即崩溃。调试器似乎表明问题出现在
中-[UIWindowController transitionViewDidComplete: fromView:toView]
现在的问题是: 我试图做一些严重非法/不可能的事情吗?
如果存在解决方案,它只是将控件移动到另一个方法?如果是,哪种方法?
或者解决方案要复杂得多?
谢谢
答案 0 :(得分:3)
当viewDidAppear通知调用返回时,UIWindowController可能会错误地认为视图仍然可见。
尝试使用延迟为零的performSelector:withObject:afterDelay: - 它会在控制返回到运行循环后(并且在UIWindowController调用堆栈之外)尽快调用所选方法:
- (void) delayedDismissOfModalViewController {
[self dismissModalViewControllerAnimated:YES];
}
- (void) viewDidAppear: (BOOL) animated {
[super viewDidAppear:YES];
if (<value> == 1) {
[self performSelector: @selector(delayedDismissOfModalViewController)
withObject: nil
afterDelay: 0];
}
}