2012-01-12 60 views
0

我的UIViewController在我的rootViewController上調用一個函數,然後調用popToRootViewControllerAnimated將視圖返回給rootController。這一切正常 - 太棒了!popToRootViewControllerAnimated不修改附加導航項

不幸的是,UINavigationItem(頂部的工具欄)似乎顯示了剛剛被刪除的rootViewController和UIViewController的mashup。

我需要做什麼?我做錯了什麼?

+0

你添加任何自定義項目在頂部導航欄? – Kekoa 2012-01-12 22:10:13

+0

rootViewController在viewDidLoad上添加了一個uisegctedcontrol。如果我在子視圖上使用正常的「後退」按鈕,它工作正常。我可以以編程方式觸發此按鈕嗎? – Chris 2012-01-12 22:13:08

回答

1

導航欄不記得對其進行的更改,因此當您推新控制器時,導航欄會被更改爲新視圖控制器的標題,但它不會存儲那裏的內容爲先前的視圖控制器。

每當您回到具有自定義項目的視圖控制器時,您都需要重新創建工具欄中的項目。

您可以在viewWillAppear而不是viewDidLoad上做到這一點。我無法完全記得,但是您應該在導航工具欄上重新創建自定義控件,因爲在推送新視圖控制器時它不會被保留。

+0

感謝您的答覆 - 我試過這個,但沒有奏效。通用的「返回」按鈕實現如何工作。我不能手動觸發這個嗎? – Chris 2012-01-12 22:26:04

+0

後退按鈕只是做一個'-popViewControllerAnimated:',看起來就像你找到它。 – Kekoa 2012-01-13 22:22:09

0

看來,從rootViewController調用popToRootViewController混淆了事情。爲了改善這種情況我稱之爲從內以下調用的UIViewController

[self.navigationController popViewControllerAnimated:YES];