2012-01-18 27 views
0

當我學習開發使用的是iOS 5彈出一個NavigationController

我想創建排序(瞭解核心數據)的聯繫人列表中的iPhone應用程序的iOS 5 viewWillAppear中不會被調用。

我有一個UITableView嵌入UINavigationController(我已經通過編輯器 - >嵌入 - >導航控制器)。

在我saveContact行動結束時,我也行:

[self.navigationController popViewControllerAnimated:YES]; 

要從聯繫人創建形式向UITableView中列出的所有聯繫人移動。獲取聯繫人的代碼位於viewWillAppear

問題是,當我彈出聯繫人創建表單時,新聯繫人不會顯示在列表中。

我在Apple的文檔中發現我應該添加UINavigationControllerDelegate到我的UITableViewController,但沒有成功。

有什麼建議嗎?

回答

1

您需要實現UINavigationController協議的navigationController:willShowViewController:animated:方法在UITableViewController並設置導航控制器表視圖控制器的代表。在實現該方法時,請檢查將顯示的視圖是否與您的視圖相同,然後是否獲取結果。

如果您真的想將Core Data與表格視圖集成,我建議您調查NSFetchedResultsController。它簡化了對後備數據存儲的更新處理,所以如果您以後添加了後臺同步功能,後臺線程可以不斷更新存儲,然後NSFetchedResultsController可以爲您處理更新表。這也將使您當前的示例更容易,因爲您只需將​​發送到Core Data,然後結果控制器將開始更新您的表,而不使用viewWillAppear:方法

+0

如何設置代理導航控制器? – 2012-01-18 19:38:50

+0

'delegate'是UiNavigationController類的一個屬性,因此在表視圖控制器的'viewDidLoad'方法中,將表視圖控制器設置爲導航控制器的代理(self.navigationController.delegate = self)。 – 2012-01-18 19:45:57

+0

它沒有工作。這是我的代碼的一個pastie:http://pastie.org/3209337和http://pastie.org/3209343。你可以看看它,也許指向正確的方向嗎? – 2012-01-18 19:57:23

相關問題