【iOS】—— push和present的区别以及混用

一.push和present的相同点:

pushpresent方法都可用于推出新的界面。

  • pushpop对应使用。
//推出视图
	NextViewController *nextView = [[NextViewController alloc] init];
    [self.navigationController pushViewController:nextView animated:YES];

//返回上一级
[self.navigationController popViewControllerAnimated:YES];

//返回根视图
[self.navigationController popToRootViewControllerAnimated:YES];

//返回指定级数
//objectAtIndex:参数为想要返回的级数
[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:0]  animated:YES];
  • presentdismiss对应使用。
//推出视图
	NextViewController *nextView = [[NextViewController alloc] init];
 
    [self presentViewController:nextView animated:YES completion:nil];

//返回上一个视图(只能逐级返回)
[self dismissViewControllerAnimated:NO completion:nil];

二.push和present的不同点:

push:

push由视图栈控制,每一个视图都入栈,调用之前的视图则需要出栈,可返回任意一层,一般用于同一业务不同界面之间的切换。
push是由UINavigationController管理的视图控制器堆栈,在window下同时只能显示一个ViewController。

present:

present弹出的视图是模态视图(我对模态视图的理解大概就是一个临时视图),只能逐级返回,一般用于不同业务界面的切换。
present是由UIViewController管理的视图控制器堆栈,在window下可以以叠加的方式展示,当顶层的view透明时可以看到底层的view,但只有顶层的view可用户交互。

三.在实际开发中经常会遇到的需求:

A页面(首页)
B页面(详情页)
C页面(编辑页)

1.全push交互:

UITabBarController下由每个子UINavigationControllerpush所有的A、B、C页面。在特定场景下如QQ,从其他的任何子ViewController跳转到聊天页面,都需要将当期的UINavigationController popRoot,再UITabBarController 跳转到第一个UINavigationController,然后再由当期的UINavigationController push至会话页面。

2.全present交互:

如今日头条,使用的就是全present交互,一致的present动画。这样的交互优势是简单,可以适应所有的跳转交互需求(本地交互与远程交互),缺点是用户交互方式单一,当遇到像QQ一样的单一聊天页面需求时,很难实现。

3.主push辅present交互:

主要由push交互,当遇到无其他跳转的页面时可以用present来跳转,例如编辑页面、登录页面。

四.代码演示:

push:

43

334

342

present:

在第一个视图点击屏幕出现第二个视图,在第二个视图点击屏幕返回第一个视图。
123
3244
push代码地址:push
present代码地址:present

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值