2011-09-20 60 views
1

我有一個根視圖控制器,它的子類UINavigationController。它加載在一個UIButton的子視圖中。當按下該按鈕時,我想在子控制器中從子視圖的相應視圖控制器(允許說ChildViewController)到UINavigationControllerpushViewController:方法進行調用。從子控制器函數調用pushViewController

這是如何不直接引用父視圖控制器?它是使用標準協議方法實現還是必須創建自己的?

+2

是'navigationController'屬性的一個選項嗎? – Jumhyn

回答

0

孩子UIViewController包含你的孩子UIViewUIButton應該有parentViewController財產。您可以使用它來獲得對您的UINavigationController的弱引用,您可以在其中發送信息pushViewController:animated:

+0

我知道這篇文章很舊,但我遇到了類似的問題。你能擴展這個答案嗎?我無法弄清楚如何獲得參考。我在自定義單元格中有一個按鈕,並想呈現一個UIActivityViewController。你如何使用parentViewController屬性。謝謝你的時間。 – Douglas

3

每個UIViewController都有一個名爲navigationController的屬性。如果一個UIViewController是一個UINavigationController堆棧的一部分,您可以通過以下方式使用navigationController屬性:

[self.navigationController pushViewController:yourNextViewController animated:YES]; 

有沒有需要訪問RootViewController的唯一堆棧上推一個新視圖控制器。如果你有大的導航堆棧,這可能會變得非常糟糕。

順便說一下 - 蘋果states UINavigationController不打算用於子類。通常,傾聽他們的警告和指示是一個好主意,因此您可能需要再次重訪子類方法。 使用加載到UINavigationController堆棧的子類UIViewController可能證明是一種更好的方法。

希望這會有所幫助。

相關問題