dismissViewControllerAnimated VS popViewController

2019-01-22 02:06发布

问题:

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.

回答1:

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];


回答2:

-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.