我有一個根視圖控制器,它的子類UINavigationController
。它加載在一個UIButton
的子視圖中。當按下該按鈕時,我想在子控制器中從子視圖的相應視圖控制器(允許說ChildViewController
)到UINavigationController
的pushViewController:
方法進行調用。從子控制器函數調用pushViewController
這是如何不直接引用父視圖控制器?它是使用標準協議方法實現還是必須創建自己的?
我有一個根視圖控制器,它的子類UINavigationController
。它加載在一個UIButton
的子視圖中。當按下該按鈕時,我想在子控制器中從子視圖的相應視圖控制器(允許說ChildViewController
)到UINavigationController
的pushViewController:
方法進行調用。從子控制器函數調用pushViewController
這是如何不直接引用父視圖控制器?它是使用標準協議方法實現還是必須創建自己的?
孩子UIViewController
包含你的孩子UIView
和UIButton
應該有parentViewController
財產。您可以使用它來獲得對您的UINavigationController
的弱引用,您可以在其中發送信息pushViewController:animated:
我知道這篇文章很舊,但我遇到了類似的問題。你能擴展這個答案嗎?我無法弄清楚如何獲得參考。我在自定義單元格中有一個按鈕,並想呈現一個UIActivityViewController。你如何使用parentViewController屬性。謝謝你的時間。 – Douglas
每個UIViewController都有一個名爲navigationController的屬性。如果一個UIViewController是一個UINavigationController堆棧的一部分,您可以通過以下方式使用navigationController屬性:
[self.navigationController pushViewController:yourNextViewController animated:YES];
有沒有需要訪問RootViewController的唯一堆棧上推一個新視圖控制器。如果你有大的導航堆棧,這可能會變得非常糟糕。
順便說一下 - 蘋果states UINavigationController不打算用於子類。通常,傾聽他們的警告和指示是一個好主意,因此您可能需要再次重訪子類方法。 使用加載到UINavigationController堆棧的子類UIViewController可能證明是一種更好的方法。
希望這會有所幫助。
是'navigationController'屬性的一個選項嗎? – Jumhyn