push&present
push是由UINavigationController管理的视图控制器堆栈,在window下同时只能显示一个ViewController。
present是由UIViewController管理的视图控制器堆栈,在window下可以以叠加的方式展示,当顶层的view透明时可以看到底层的view,但只有顶层的view可用户交互。
在实际开发中的经常会遇到的需求
A页面(首页)
B页面(详情页)
C页面(编辑页)
1.全push交互:
在UITabBarController下由每个子UINavigationController来push所有的A、B、C页面。在特定场景下如QQ,从其他的任何子ViewController跳转到聊天页面,都需要将当期的UINavigationController pop至Root,再UITabBarController 跳转到第一个UINavigationController,然后再由当期的UINavigationController push至会话页面。
2.全present交互:
如今日头条,使用的就是全present交互,一致的present动画。这样的交互优势是简单,可以适应所有的跳转交互需求(本地交互与远程交互),缺点是用户交互方式单一,当遇到像QQ一样的单一聊天页面需求时,很难实现。
3.主push辅present交互:
主要由push交互,当遇到无其他跳转的页面时可以用present来跳转,例如编辑页面、登录页面。