我有以下代码
- (void) viewWillAppear:(BOOL)animated
{
NSLog(@"dismiss view");
[self dismissModalViewControllerAnimated:YES];
}
这会打印解除视图,但不会执行视图解雇代码。
如果没有来自IBAction的触发器,代码可以在代码中被解雇吗?
为什么不执行此操作?
答案 0 :(得分:1)
将代码放入viewDidAppear
而不是viewWillAppear
可能会更好。后者倾向于在任何动画开始时调用,例如模态开始从屏幕上滑落;当动画完全结束时,往往会调用前者。请注意,即使这种策略有效,你也可能会产生一种奇怪的效果,即两个模态会一个接一个地滑落;我认为你只想要一个滑落效果。
如果您关闭“向下”模式对话框(首先推送的对话框),并且不打算忽略最顶层的对话框会发生什么?
在解雇模态视图控制器时,还要考虑注意animated
参数。当你遇到像你这样的问题时,动画与否的不同组合会产生不同的效果。
如果您发布更完整的代码示例,我们可以给出更好的答案!
答案 1 :(得分:0)
尝试稍微延迟第二次解雇。
- (void) viewWillAppear:(BOOL)animated
{
NSLog(@"dismiss view");
[self performSelector:@selector(delayedDismiss) withObject:nil afterDelay:0.5];
}
-(void)delayedDismiss{
[self dismissModalViewControllerAnimated:YES];
}