在演示或解雇过程中尝试从视图控制器中解除

时间:2013-04-08 09:20:37

标签: iphone ios objective-c uiviewcontroller

我有两个UIViewController课程,其中FirstClass我有{{1>} 登录,当用户点击按钮时,我会显示{{1}对于我已经完成的事情,

UIButton

在SecondClass中,我有一个注销按钮,它会重定向到 FirstClass ,因为我已经完成了,

SecondClass

当我按下SecondClass中的Logout按钮时,我收到警告信息

SecondClass *index = [[SecondClass alloc] init];
[self presentModalViewController:index animated:YES];

这里有什么问题..

3 个答案:

答案 0 :(得分:30)

添加了iOS 6和iOS 6之前的答案:

iOS 5.0及更高版本

当您退出时,请在解雇之前添加此检查:

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

iOS 4.X及以下

在解雇之前添加此检查:

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

答案 1 :(得分:2)

在您退出的地方拨打这些电话。然后检查:

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

答案 2 :(得分:1)

有很多事情可能导致这种情况,这里有一些选择:

  1. 您忘记在ViewController方法之一上调用super,例如viewWillAppear,viewWillAppear等。请参阅UIViewController文档,了解何时必须调用super。
  2. 不止一次调用dismissModalViewControllerAnimated:方法,如果您多次向UIButton添加目标,就会发生这种情况。
  3. 为了更好地理解问题,请完整地粘贴两个视图控制器的代码。