美文网首页ios开发iOS学习
push/pop/present/dismissViewCont

push/pop/present/dismissViewCont

作者: 纵横而乐 | 来源:发表于2015-09-28 14:03 被阅读1252次

viewcontroller切换是app中场景切换的形式,这里简单归纳下各controller切换的概要

presentViewController

present的场景大多是需要中断当前工作流,并需要在当前view层次中插入一个搜集用户信息的viewcontroller的情况,当然并不仅限于此。

原则上可以present任何view controller, 但一般present与被presented的controller之间需要有某种联系,它会模态地将目标controller加载到当前上下文之前。呈现之后,目标controller D的presentingViewController会被设置为加载它的controller P,而P的presentedViewController会设置为D。

通常,加载进来的controller的view会占据整个window的空间,但modalPresentationStyle可以设置不同的最终呈现方式

present的切换方式

在present某controller地时候,设置presented controller的modalTransitionStyle属性可以相应地设置其出现的动画。

present上下文

present上下文定义了presented controller在屏幕上的覆盖区域,在默认情况下,是由root controller来提供这个present上下文的,但controller层次中的任何一个祖先都可以选择提供这份上下文,只要设置definesPresentationContext为YES。定义了presentation context的controller,还可以设置providesPresentationContextTransitionStyle属性以定义presented controller的transition style而不是取默认的presented controller的transition style。

相关文章

网友评论

  • 吵架鱼:您好,想问下关于push/pop/present/dismissViewController这几种方式的区别。特别是当使用navigationController的时候,如果一直push,会出现内存一直增长的问题,谢谢
    吵架鱼:@子达如何 之前做支付宝的项目,用的push,的确是有内存一只增长的问题,不过内存增长还会跟内存管理及循环引用有关。还有就是可以通过每次都让堆栈中都只存放一个画面来实现不是一一直push的问题
    子达如何:@纵横而乐 我觉得push不一定内存就一直涨,iOS系统会在内存紧张的情况下把不在展现的view的内存回收
    纵横而乐:@吵架鱼 一直push因为在这个navigation栈上的各controller及其view都还内存中,内存会一直涨

本文标题:push/pop/present/dismissViewCont

本文链接:https://www.haomeiwen.com/subject/fnyqqttx.html