iOS - present和push
一.定义区别
- pushViewController 导航栏控制器入栈的方式切换页面(pop可以返回任意一层)push一般用于同一业务不同界面之间的切换(也就是只能导航栏间的切换,从第二个导航栏到第三个导航栏)
- (void) pass {NSLog(@"pass to third");//第三个同样是导航栏,而且两个导航栏之间可以自由返回ThirdViewController *thirdVC = [[ThirdViewController alloc] init];[self.navigationController pushViewController:thirdVC animated:YES];
}
- presentViewController模式切换的方式切换页面(dismiss只能逐级返回)present一般用于不同业务界面的切换。
若是由视图页面转到导航栏,要先建立一个导航栏。
//出来一个navigationSecondViewController *secondVC = [[SecondViewController alloc] init];UINavigationController *navSecondVC = [[UINavigationController alloc] initWithRootViewController:secondVC];navSecondVC.modalPresentationStyle = UIModalPresentationFullScreen;[self presentViewController:navSecondVC animated:YES completion:nil];
若是两个视图间,直接用present即可
- (void) press {NSLog(@"press 01");SecondViewController *secondVC = [[SecondViewController alloc] init];secondVC.modalPresentationStyle = UIModalPresentationFullScreen;[self presentViewController:secondVC animated:YES completion:nil];
}
二. 返回方法
- push和pop对应
用UINavigationController的时候用pushViewController:animated返回之前的视图[[self navigationController] popViewControllerAnimated:YES]; push以后会在navigation的left bar自动添加back按钮,所以一般不用写返回,点back方法即可
有关pop,pop一般返回一级和左上角的back的作用是一样的,所以它的用处在于可以分级返回
//返回上一视图[self.navigationController popViewControllerAnimated:YES];//返回根视图(to root)[self.navigationController popToRootViewControllerAnimated:YES];//返回任意视图(atindex后加返回的层数)[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:0] animated:YES];
- present和dismiss对应presentModalViewController:animated
[self presentModalViewController:controller animated:YES];
返回之前的视图 [self dismissModalViewControllerAnimated:YES];
dismiss在导航栏和页面中都可以使用,在页面中即返回上一级页面,在导航栏中使用的话是返回到所有导航栏前的一个页面,但是写法是相同的。
- (void) backDiss {NSLog(@"backdiss");[self dismissViewControllerAnimated:YES completion:nil];
}
三.使用区别
- [self presentModalViewController:controller animated:YES];主语是UIVIewController,即单纯页面切换
- [self.navigationController pushViewController:upViewController animated:YES];与[self.navigationController popViewControllerAnimated:YES];这两句时主语是navigationController,所以如果是在导航栏上实现页面的跳转使用push,除此之外的都是用present
代码
2020-10-04 23:15:46.330677+0800 present和push[79292:5066460] press 01 to
2020-10-04 23:16:19.915102+0800 present和push[79292:5066460] pass to third
2020-10-04 23:16:42.522594+0800 present和push[79292:5066460] backPop to Second
2020-10-04 23:16:47.412832+0800 present和push[79292:5066460] pass to third
2020-10-04 23:16:48.862871+0800 present和push[79292:5066460] backdiss to First(dissmiss因为上一级页面是第一个,两个导航栏是同一级页面)
2020-10-04 23:17:01.976698+0800 present和push[79292:5066460] press 01 to
2020-10-04 23:17:04.255234+0800 present和push[79292:5066460] pass to four
2020-10-04 23:17:12.925467+0800 present和push[79292:5066460] back2 ?->dissmiss second(因为上一级页面是第二个)
2020-10-04 23:18:01.000129+0800 present和push[79292:5071067] [ServicesDaemonManager] interruptionHandler is called. -[FontServicesDaemonManager connection]_block_invoke
我写的代码,第一个视图present到第二个(导航栏)。第二个push到第三个(导航栏),第三个可以通过dismiss返回到第一个,也可以通过pop回到第二个。第二个还可以present到第四个(一个界面),第四个通过dismiss回到第二个(导航栏)。如下图:
iOS - present和push相关推荐
- iOS present 和 push
文章目录 简介 使用方法 A视图 present 到 B视图再push到 C视图 C视图使用dismiss返回 C视图使用pop返回 简介 共同点 – present和push方法都可用于推出新的界面 ...
- [iOS]-present和push
共同点: present和朴实方法都可以用于推出新的界面,present和dismiss对应使用,push和pop对应使用. 不同点: present弹出的视图是模态视图(是一个临时视图)并且模式情况 ...
- 【iOS】present和push
present和push present和dismiss 使用方法 特点 push和pop 使用方法 特点 demo present和dismiss 使用方法 使用一般的视图控制器用present方法 ...
- 【iOS开发】——present和push
假期写UI的时候就遇到了到底是使用present还是使用push,二者虽都可以推出新界面,但是用法等方面略有不同. 一. present与push之间的不同点和相同点 共同点 push与present ...
- iOS - APP任意push新页面那些事
大家都知道,UINavigationController对象有一个方法pushViewController,用来做视图跳转,也是在iOS开发中常用的页面转换方法之一.大多数APP的结构一般都是,使用一 ...
- iOS 无法添加 push notifications
0x00 添加不了 在工程配置中点击 +Capability 搜索Push Notifications 单击.双击.拖动 都添加不了 0x01 解决方案 项目中的 XXX.entitlements(这 ...
- present/push的恩怨情仇
present/push的恩怨情仇 push/pop 简介 VC栈存储 container view controller 优势 dealloc navigationController 无navig ...
- iOS 自定义转场动画实现小红书的push效果思路以及下雪碎屏等动画的实现
感觉好久没写会动的Demo了,前几天写了很久的Block源码分析,分析了几天整个人都不好了,都不知道block是什么了......,有需要的同学可以去看看,简直不要太简单Block是什么鬼毕竟也是做电 ...
- iOS iOS应用PUSH功能的实现
1. push原理 iOS push 工作机制可以用下图简要概括 Provider:应用自己的服务器: APNS:Apple Push Notification Service的简称,苹果的PUSH服 ...
最新文章
- Nacos更新配置参数不生效
- android object数组赋值_Java对象数组定义与用法详解
- jflash view log_塑胶产品上的“LOG”是怎么来的?
- 混凝土泵送机械大数据挖掘与应用
- 长痘痘部位和对应的毛病
- Apache Flink 在快手的过去、现在和未来
- java获取取得Timestamp类型的当前系统时间
- jacob+wps 文档转为pdf excel转换pdf卡死无响应
- 计算机应届博士生的一点求职经验——概述篇
- QQ邮箱一键删除所有邮件的方法
- libdbus 实例以及使用d-feet查看接口方法
- 2021年总结:厚积薄发,突破自我
- 谷歌浏览器怎么关闭硬件加速?
- 又猎一“狐”:一名外逃越南嫌疑人落网啦
- 机器学习——验证方法
- Ubuntu apt update无论使用什么源都出现类似的错误
- vue会不会?看了你就会了!干了#兄弟们
- linux必装软件有哪些,来说说Linux下的那些常用软件
- 基于 Ekman 方程求解大气边界层中的水平均匀流和高度相关的涡流粘度附matlab代码
- Nginx+Tomcat服务器负载均衡实践方案