Reputation: 2775
I am having a problems with the dismissViewControllerAnimated
method not closing down the view.
What is happening in the app here is:
ItemViewController
is selected.ItemDetailViewController
and details are sent through a delegateItemViewController
All of this works except for the View is not dismissed, there are no errors. Can anyone see what is wrong?
- (void)itemDetailViewControllerDidFinish:(ItemDetailViewController *)controller
{
NSLog(@"Controller: %@", controller);
// Returns - Controller: <ItemDetailViewController: 0x6b68b60>
[self dismissViewControllerAnimated:YES completion:nil];
}
Upvotes: 44
Views: 71426
Reputation: 13
Your Situation is - ItemViewController -> ItemDetailViewController (pushed on navigationController) Self.dismissViewController(..) dismiss a view controller that is presented over self(in ur case it is ItemViewController). Here, u did not presented any VC over self, instead u pushed a new VC over navigation stack. So, Correct way to dismiss ItemDetailViewController would be
self.navigationController.popViewController(true). please read the description of dismissViewController(....) to get more clarity.
Upvotes: 0
Reputation: 6213
Had a problem where calling dismissViewControllerAnimated
dismissed the keyboard in a UIViewController, but not the view itself.
Solved it by using two calls:
[self dismissViewControllerAnimated:NO completion:nil];
[self dismissViewControllerAnimated:YES completion:nil];
an instant one for the keyboard, then an animated one for the controller
Upvotes: 4
Reputation: 3233
I had a problem in iOS5 where the standard completion callback was not allowing the view to completely dismiss (only the current pushed view of that modal)
[controller dismissViewControllerAnimated:YES completion:^ {
//
}];
Solution for iOS5 is to not have a callback:
[controller dismissViewControllerAnimated:YES completion:nil];
Upvotes: 5
Reputation: 752
The answer is in this page: dismissviewcontrolleranimated-vs-popviewcontrolleranimated
dismissViewController is used when you do not have a navigationcontroller. Most probably you are using a navigation controller, then use self.navigationController popViewController instead.
Also take note of lemax his remark: use NULL, not nill for the completionhandler
Upvotes: 10
Reputation: 41005
What if you call [controller.navigationController popViewControllerAnimated:YES]
instead?
For that matter, what if you call [controller dismissViewControllerAnimated:YES completion:nil]
instead of calling it on self?
Upvotes: 66