在做iOS app項目的時候嗤栓,頁面之間的跳轉最長用的兩種方式佑刷,一個是push忘闻,一個是present钝计,今天才發(fā)現(xiàn)原來兩種方式的實現(xiàn)機制是不一樣的,舉個簡單例子齐佳,有兩個頁面A和B私恬,如果是push的話,應該是A push -> B炼吴,然后B pop -> A本鸣,然而present、dismiss最標準的用法卻不是這樣的硅蹦,下面看一下官網給出的一段話
The presenting view controller is responsible for dismissing the view controller it presented. If you call this method on the presented view controller itself, it automatically forwards the message to the presenting view controller.
意思就是說A present 出B永高,A應該負責 dismiss B。如果在B里執(zhí)行dismiss方法提针,會把消息傳遞到A命爬,從而實現(xiàn)dismiss B。
雖然說在一般情況下B里dismiss同樣可以達到目的辐脖,但是如果在B頁面又present出一個頁面C饲宛,這時候在B頁面dismiss,其實是dismiss的C嗜价,這種情況就達不到dismissB的效果艇抠。
所以為了防止這種情況的發(fā)生,最好還是誰present出來的誰負責dismiss久锥。