push/pop/present/dismissViewCont
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。