Harish
Harish

Reputation: 2512

Attempt to dismiss from view controller while a presentation or dismiss is in progress

I have TWO UIViewController classes, where in FirstClass i have an UIButton for Login, when user taps on button, i will display SecondClass... For that i have done,

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

In SecondClass i have a logout button, which will redirect to FirstClass, for that i have done,

[self dismissModalViewControllerAnimated:YES];

When i press Logout button in SecondClass, i get the warning msg

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

What is the problem here..

Upvotes: 16

Views: 26369

Answers (3)

Kevin
Kevin

Reputation: 771

Added both iOS 6 and pre-iOS 6 answers:

iOS 5.0 and later

When you logout, add this check before dismissing:

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

iOS 4.X and less

Add this check before dismissing:

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

Upvotes: 31

Tom Susel
Tom Susel

Reputation: 3437

There are many things that may cause this, here are some options:

  1. You forgot to call super on one of the ViewController methods such as viewWillAppear, viewWillAppear etc. Consult the UIViewController documentation to see when you have to call super.
  2. The dismissModalViewControllerAnimated: method is being called more than once, this can happen if you added a target to the UIButton more than once.

To get better understanding of the problem please paste the code of both view controllers in its entirety.

Upvotes: 1

Vishal
Vishal

Reputation: 8256

Call these lines where you logout & then check:

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

Upvotes: 3

Related Questions