【iOS开发】——present和push

假期写UI的时候就遇到了到底是使用present还是使用push,二者虽都可以推出新界面,但是用法等方面略有不同。

一、 present与push之间的不同点和相同点

共同点

push与present都可以推出新的界面。

不同点

present与dismiss对应,push和pop对应。
present只能逐级返回,push所有视图由视图栈控制,可以返回上一级,也可以返回到根vc,其他vc。
present一般用于不同业务界面的切换,push一般用于同一业务不同界面之间的切换。

二、二者的使用方法

present

 self presentViewController: animated: completion:

这种方法就是以模态切换的方式切换页面。
返回之前的视图 [self dismissModalViewControllerAnimated:YES];
push 以后会在 navigation的 left bar自动添加back按钮,它的响应方法就是返回,所以一般不需要写返回方法,点back按钮即可。
假设是从A控制器转到B控制器,那么:
presentedViewController 就是B控制器;
presentingViewController 就是A控制器;

push

self.navigationController pushViewController: animated:

这个方法适用于在UINavigationController中切换视图,是导航控制器以入栈的方式切换页面。
返回之前的视图 [self.navigationController popViewControllerAnimated:YES];

总结:

在我理解看来,present就是UIViewController页面之间的单纯切换,而push是在UINavigationController中的页面的切换。

请添加图片描述
demo:GitHub

Guess you like

Origin blog.csdn.net/weixin_50990189/article/details/120277377