我們知道通過(guò) present 和 dismiss 方法可以進(jìn)行頁(yè)面(ViewController)跳轉(zhuǎn)。其中 present 是加載新的模態(tài)視圖宪拥,而 dismiss 是退出當(dāng)前視圖她君,回到上一個(gè)視圖。
A-present->B-dismiss->A
但有時(shí)我們并不想要一級(jí)一級(jí)地往回跳球涛,比如需要跨級(jí)跳轉(zhuǎn)校镐,或者直接跳回到根頁(yè)面上。下面通過(guò)樣例分別進(jìn)行演示从祝。
一引谜、連續(xù)dissmiss兩個(gè)視圖
比如下面樣例,我們?cè)贑頁(yè)面中想要直接跳回到A頁(yè)面呐赡。
A-present->B-present->C-dismiss->A
self.presentingViewController?.presentingViewController?.dismiss(animated: true, completion: nil)
二链嘀、直接跳回到根視圖
比如下面樣例档玻,我們?cè)贔頁(yè)面上想直接跳回到最底層頁(yè)面A。有兩種實(shí)現(xiàn)方法霹琼。
A-present->B-present->...-dismiss->A
1凉当,循環(huán)調(diào)用 presentingViewController 獲取根VC看杭,再dissmiss
//獲取根VC
var rootVC = self.presentingViewController
while let parent = rootVC?.presentingViewController {
rootVC = parent
}
//釋放所有下級(jí)視圖
rootVC?.dismiss(animated: true, completion: nil)
2,直接通過(guò) window.rootViewController 獲取根VC模孩,再dissmiss
self.view.window?.rootViewController?.dismiss(animated: true, completion: nil)