0

在項目中,我遵守了所有的網頁都看如何打破導航控制器鏈

Home controller -> Table View controller -> Page View Controller 

現在在頁面視圖控制器後至少一次的導航控制器鏈 - 我要自動轉到完全不同這是測驗視圖。

Quiz Controller-> Result Controller -> Another Quiz Controller-> Result controller -> Yet another quiz Controller -> Result Controller -> Back to Home Controller 

有3個不同的測驗。在完成所有三次測驗之後,我想回到家中。同樣在每個結果控制器中,我想提供一個返回主頁的選項。當到達主視圖時,它應該是全新的重啓。

在任何中間階段,我不想通過鏈條返回 - 即不需要中間控制器。那麼應該用什麼segue來達到這個目的呢?

我想反對push segue,因爲它會有所有先前的視圖控制器的堆棧。有什麼辦法可以阻止導航控制器鏈並啓動新的導航?

作爲一種很好的編程習慣,如果使用模態視圖,父視圖應該消除子視圖。但在這種情況下,我不想回去,而是想從這個模式視圖開始新的導航控制器鏈。但最後還是想直接回家控制器。

回答

1

使用popToRootViewControllerAnimatedpopToViewController:animated

popToRootViewControllerAnimated:彈出堆棧除了根視圖控制器上的所有視圖控制器和更新顯示。

popToViewController:animated:彈出視圖控制器,直到指定的視圖控制器位於導航堆棧的頂部。

popToViewController例如

if([[self.navigationController viewControllers] containsObject:HomecontrollerObj]) 
{ 
    [self.navigationController popToViewController:HomecontrollerObj animated:animation]; 

}

回家,還可以使用

[HomecontrollerObj.navigationController popViewControllerAnimated:NO]; 
[TableViewcontrollerObj.navigationController popViewControllerAnimated:NO]; 
[PageViewControllerObj.navigationController popViewControllerAnimated:NO];