Iphone viewcontroller赢得';不要拒绝

Iphone viewcontroller赢得';不要拒绝,iphone,Iphone,我有以下代码 - (void) viewWillAppear:(BOOL)animated { NSLog(@"dismiss view"); [self dismissModalViewControllerAnimated:YES]; } 这将打印Disclose视图,但不会执行视图Disclose代码 在没有来自iAction的触发器的情况下,可以在代码中取消视图吗 为什么不执行此操作?请在第二次解雇时稍微延迟一点 - (void) viewWillAppear:(BOOL)a

我有以下代码

- (void) viewWillAppear:(BOOL)animated
{
   NSLog(@"dismiss view");
   [self dismissModalViewControllerAnimated:YES];
}
这将打印Disclose视图,但不会执行视图Disclose代码

在没有来自iAction的触发器的情况下,可以在代码中取消视图吗


为什么不执行此操作?

请在第二次解雇时稍微延迟一点

- (void) viewWillAppear:(BOOL)animated
{
   NSLog(@"dismiss view");
   [self performSelector:@selector(delayedDismiss) withObject:nil afterDelay:0.5];
}

-(void)delayedDismiss{
   [self dismissModalViewControllerAnimated:YES];
}

您可能会更幸运地将代码放入
viewdide
而不是
viewwillbeen
。后者倾向于在任何动画开始时调用,例如模式开始滑离屏幕;当动画完全完成时,倾向于调用前者。注意,即使这个策略有效,你也可能会得到一个奇怪的效果,两个情态动词一个接一个地滑落;我想你只需要一个滑动效果

如果您关闭“向下”模式对话框(第一次按下的对话框),而不关闭最上面的对话框,会发生什么

也考虑在代码模式视图控制器中忽略<代码>动画参数。当您遇到类似问题时,动画与非动画的不同组合可能会产生不同的效果


如果您发布更完整的代码示例,我们可以给出更好的答案

你能发布显示模态视图控制器的代码吗?我不确定是否是这样,因为我有一个名为closeView的方法,当按下“后退”按钮时我会调用该方法,这样会正确地取消视图。如果我在ViewWillAppeard方法中调用closeview方法,它不会执行。在ViewWillDisplay中调用视图时,是否可能无法取消该视图?为什么要在其ViewWillDisplay方法中取消该视图?因为我需要一次取消两个视图。例子。视图1显示视图2,视图2显示视图3。然后,当选择某个对象时,我需要关闭这两个视图并返回到View1。那么,您将此方法放在哪个视图控制器中?如果是“View2”,那么第一次如何呈现View2?我不特别推荐这种策略——为使某些东西工作而任意延迟是一种代码味道。通常有更好的方法。(考虑到OP提供的信息量有限,很难知道确切的方法。)我认为调用是重叠的,同一个模态视图控制器得到两个调用。第二个需要时间作为响应者。只是一个解决办法,我知道不是更好的办法,但更容易。我认为您必须检查您的实施情况。非常好,谢谢。:)将代码移动到ViewDidDisplay,它就可以工作了。