0

我訪問從應用程序的委託導航控制器,並試圖推動另一種觀點認爲:NavigationController不推視圖

[appDelegate.myNavigationController pushViewController:self.detailView animated:YES]; 

,但什麼也沒有發生。以上是在myTableView中。

該應用程序是基於tabbar的。我在IB的TabbarController對象下添加了一個NavigationController對象。然後我在應用程序委託中創建了對myNavigationController的引用。

任何建議如何我可以找出爲什麼上面的代碼不工作?它適用於addSubview到當前視圖。

回答

1

確保appDelegate不爲空(無論你得到它正在返回正確的值),appDelegate.myNavigationController不爲空(IBOutlet中的設置是正確的),並且appDelegate.myNavigationController.window不爲空(這是當前顯示在堆棧的頂部。

還要確保以前推的觀點彈出任何動畫,你把你的新項目之前完成。

+0

謝謝。 IBOutlet未連接。 – 4thSpace 2010-05-19 16:06:17

+0

在detailView中,我在viewWillAppear中執行此操作:appDelegate.myNavigationController.navigationItem.rightBarButtonItem = self.myButton,但沒有出現按鈕。我看到這些實例是有效的。任何想法我做錯了什麼? – 4thSpace 2010-05-19 16:44:42

+0

您應該爲此提出另一個問題。然而,除了我的頭頂,navigationItem適用於導航控制器中顯示的視圖控制器,而不是導航控制器本身。你想要appDelegate.myNavigationController.topViewController.navigationItem.rightBarButtonItem。或者更簡潔地說,你可能只想要self.navigationItem.rightBarButtonItem。 – 2010-05-19 18:18:46

0

這可能不是回答你的問題。

你的代碼看起來很混亂,是的片段子類還是來自UITableViewController子類?我問什麼是pushViewController:的論點是self.detailView。保持區分是非常重要的。

如果從顯示導航欄的視圖控制器調用代碼,則應該使用self.navigationController而不是將屬性添加到appDelegate

特別是,您需要在選項卡中使用導航控制器。

任何這些都可能導致視圖出現問題。

+0

myTableView是一個UIViewController。如果detailView在myTableview上,它將如何訪問導航控制器? detailView需要對myTableView(父)的引用嗎?我寧願避免這種情況,因爲它會成爲循環引用。 – 4thSpace 2010-05-19 16:31:27

+0

如果detailView是您推送的UIViewController(並且它必須爲您的代碼片段工作),那麼它具有一個導航控制器屬性,在您推送它時會設置該屬性。 – 2010-05-19 17:57:02

相關問題