push&present
push是由UINavigationController管理的視圖控制器堆棧棍辕,在window下同時(shí)只能顯示一個(gè)ViewController。
present是由UIViewController管理的視圖控制器堆棧匀借,在window下可以以疊加的方式展示乘碑,當(dāng)頂層的view透明時(shí)可以看到底層的view熊镣,但只有頂層的view可用戶交互。
在實(shí)際開(kāi)發(fā)中的經(jīng)常會(huì)遇到的需求
A頁(yè)面(首頁(yè))
B頁(yè)面(詳情頁(yè))
C頁(yè)面(編輯頁(yè))
1.全push交互:
在UITabBarController下由每個(gè)子UINavigationController來(lái)push所有的A拓售、B窥摄、C頁(yè)面。在特定場(chǎng)景下如QQ础淤,從其他的任何子ViewController跳轉(zhuǎn)到聊天頁(yè)面崭放,都需要將當(dāng)期的UINavigationController pop至Root哨苛,再UITabBarController 跳轉(zhuǎn)到第一個(gè)UINavigationController,然后再由當(dāng)期的UINavigationController push至?xí)掜?yè)面币砂。
2.全present交互:
如今日頭條建峭,使用的就是全present交互,一致的present動(dòng)畫决摧。這樣的交互優(yōu)勢(shì)是簡(jiǎn)單亿蒸,可以適應(yīng)所有的跳轉(zhuǎn)交互需求(本地交互與遠(yuǎn)程交互),缺點(diǎn)是用戶交互方式單一掌桩,當(dāng)遇到像QQ一樣的單一聊天頁(yè)面需求時(shí)边锁,很難實(shí)現(xiàn)。
3.主push輔present交互:
主要由push交互波岛,當(dāng)遇到無(wú)其他跳轉(zhuǎn)的頁(yè)面時(shí)可以用present來(lái)跳轉(zhuǎn)茅坛,例如編輯頁(yè)面、登錄頁(yè)面则拷。