2015-10-30 53 views
-1

據我所知,當應用程序啓動時,第一個視圖控制器被加載,他的視圖被呈現。然後導航到下一個視圖控制器,並且前一個視圖控制器保持在堆棧上。因此,如果你想返回,你必須關閉當前的視圖控制器,這樣當前的VC就會被清除掉。如何知道哪些視圖(或視圖控制器)在棧上?

我想檢查一下自己對堆棧的看法,因爲我的故事板越來越複雜了,並且希望確保我做的一切都正確。我正在尋找一個解決方案,以模態形式呈現的視圖以及在導航控制器中呈現的視圖。

如何檢查哪些視圖控制器在堆棧上?

我做了一個更長的介紹,因爲我不確定我是否使用了適當的術語,我願意糾正錯誤。

+0

http://stackoverflow.com/questions/6498017/how-to-access-the-stack-in-uinavigationcontroller的重複 – NSNoob

回答

2

假設你是在最上面的(或任何)的UIViewController和所使用的UINavigationController(具有在屏幕的頂部的導航欄)然後

self.navigationController.viewControllers 

給你所有視圖控制器的陣列在堆棧上。

如果您目前有模式,那麼你就需要遍歷self.presentingViewController及其presentingViewController依此類推,直到presentingViewController是null並創建陣列yourelf。

但是,不要搞亂一堆視圖控制器!當你認爲這是你的問題的解決方案時,你是最錯誤的方向。更好地重新訪問您的問題和您的應用的導航架構。

+1

我很樂意接受任何downvote當你剛剛夠種留下了評論一些推理。我甚至可能會同意並修改我的答案或將其刪除。 –

+1

這個答案爲什麼downvoted?這是正確的答案。我唯一不同意的是「永遠不要修改導航堆棧」;只要沒有當前正在進行的推/動畫動畫,就可以完成(並且在某些情況下是必要的) – n00neimp0rtant

+0

很確定赫爾曼在正確的答案中看到了很多關於迄今爲止的積極評價。你有我的讚賞彌補它。 – NSNoob

0

您可以在您的UINavigationControllers中檢查屬性viewControllers。 viewController是一個View Controller的數組 - 你可以訪問這些元素中的每一個。

UIViewController *viewController = self.navigationController.viewControllers[i]; 
相關問題