dismissViewControllerAnimated VS popViewControllerAnimated
Asked Answered
M

2

31

I want to know what is the different of them. when I can call

[self dismissViewControllerAnimated:YES completion:nil];

and when I should call

[self.navigationController popViewControllerAnimated:YES];

according document of apple: dismissViewControllerAnimated means "Dismisses the view controller that was presented by the receiver." But I always fail to dismiss view controller by this method.

Memoried answered 18/6, 2012 at 9:26 Comment(1)
As for dismiss see this video from Stanford. dismissViewController should always be sent to presenting viewController. If you send it the presented viewController and the presentedViewcontroller had not presented another viewController then it would dismiss it properly otherwise it would not do it rightBahner
A
39

your selected application is navigation based application means

[self.navigationController popViewControllerAnimated:YES];

your selected application is other than the navigation based application means

[self dismissViewControllerAnimated:YES completion:nil];
Aurelea answered 18/6, 2012 at 9:31 Comment(1)
so does it means: I should not use dismissViewControllerAnimated in a navigation based application ? I think it is the reason why I always fail to dismissViewControllerAnimated, thank you !Memoried
M
41

-dismissViewControllerAnimated:completion:

Used to dismiss an UIViewController, which was presented by the method:

-presentViewController:animated:completion:.

-popViewControllerAnimated:

Method of UINavigationController is used to pop a controller shown by

-pushViewController:animated method of UINavigationController.

In the first case the view controller's view shows as a modal controller (usually from bottom to top), and the second case you are pushing a view controller in the navigation stack of UINavigationController.

Monomorphic answered 18/6, 2012 at 9:31 Comment(0)
A
39

your selected application is navigation based application means

[self.navigationController popViewControllerAnimated:YES];

your selected application is other than the navigation based application means

[self dismissViewControllerAnimated:YES completion:nil];
Aurelea answered 18/6, 2012 at 9:31 Comment(1)
so does it means: I should not use dismissViewControllerAnimated in a navigation based application ? I think it is the reason why I always fail to dismissViewControllerAnimated, thank you !Memoried

© 2022 - 2024 — McMap. All rights reserved.