试图在演示或解除正在进行的过程中从视图控制器中解除。

16

我有两个UIViewController类,其中在FirstClass中我有一个UIButton用于登录,当用户点击按钮时,我将显示SecondClass... 为此,我已经完成了以下操作:

SecondClass *index = [[SecondClass alloc] init];
[self presentModalViewController:index animated:YES];
在SecondClass中我有一个注销按钮,它将重定向到FirstClass,为此我已经完成了。
[self dismissModalViewControllerAnimated:YES];

当我在SecondClass中按下登出按钮时,会收到警告消息

**Attempt to dismiss from view controller <FirstClass: 0e39w88e160> while a presentation or dismiss is in progress!**

这里的问题是什么..

3个回答

31

增加了iOS 6及其以前版本的答案:

iOS 5.0及以上版本:

当您注销时,请在关闭之前添加此检查:

if (![self.presentedViewController isBeingDismissed])
{
    [self dismissModalViewControllerAnimated:YES completion:nil];
}

iOS 4.X及以下版本

在关闭之前添加此检查:

if (![[self modalViewController] isBeingDismissed])
{
    [self dismissModalViewControllerAnimated:YES];
}

presentedViewController 和 dismissViewControllerAnimated:completion: 在 iOS 5.0 及以后版本可用。 - Pavel Alexeev
1
谢谢@PavelAlexeev,我在文档中进行了验证并更新了我的答案。 - Kevin Zych

3

在注销时,请调用以下代码并进行检查:

if (![[self modalViewController] isBeingDismissed])
{
   [self dismissModalViewControllerAnimated:YES];
}

1

有许多原因可能会导致这种情况发生,以下是一些选项:

  1. 您忘记在视图控制器方法(例如viewWillAppear、viewWillAppear等)中调用super。请参阅UIViewController文档以了解何时需要调用super。
  2. dismissModalViewControllerAnimated:方法被调用超过一次,如果您将一个目标添加到UIButton多次,则会出现此问题。

为了更好地了解问题,请完整贴上两个视图控制器的代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接