2014-02-09 23 views
0

在覈心數據應用程序中,我有一個UIViewController,左邊有一個「master」tableview,右邊有一組細節控件(textfields,switch)和另一個UITableview。 (這是iPad佈局。)TableView由NSFetchedResultsController實例填充。當用戶在最左邊的tableview中選擇一行時,它會相應地填充詳細信息字段進行編輯,最右邊的表格由另一個NSFetchedResultsController填充,顯示一組相關對象。如何防止在細節更改和tableview重新排序時更改UITableView的選擇?

我的問題是,對於主表tableview,左邊的那個,每當我編輯與NSFetchedREsultsController的排序描述符相關的字段時,表重新排序並更改它的選擇,這意味着用戶將不得不找到所需的行並再次選擇以繼續工作。有沒有辦法阻止選擇改變,或者至少強迫它在重新排序數據後重新選擇正確的行?

+0

這不就是Apple討論的有關獲取結果控制器委託的問題嗎? https://developer.apple.com/library/ios/documentation/CoreData/Reference/NSFetchedResultsControllerDelegate_Protocol/Reference/Reference.html#//apple_ref/occ/intf/NSFetchedResultsControllerDelegate – matt

回答

0

這聽起來像你正在以最基本的方式實現提取的結果控制器的委託,即從controllerDidChangeContent:方法中調用reloadData。這將清除表視圖的選擇。

它實現了細粒度的委託方法,您應該在重新排序更新期間接收NSFetchedResultsChangeMove類型的多個更改,從中可以調用moveRowAtIndexPath:toIndexPath:,這應該保留表視圖的選擇。

否則,您可以存儲在controllerWillChangeContent:中選擇的模型對象,並從controllerDidChangeContent:中恢復該模型對象中的選擇。

+0

最終爲我工作的是我已經很強大所選對象作爲視圖控制器的屬性,所以在controllerDidChangeContent中,我讓tableView選擇了找到對象的行。感謝您指引我朝着正確的方向! –

相關問題