2012-12-14 44 views
0

我正在開發一個新的iPad UISplitViewController應用程序,我在左邊有一個MasterView核心數據對象。當選擇CoreData對象時,其詳細信息顯示在DetailView中。該對象的詳細信息可以在DetailView中進行編輯和更改,然後通過按下DetailView中的按鈕進行保存。保存核心數據對象後UISplitView詳細信息不會更新

按下保存按鈕後,用戶必須在MasterView中重新選擇Core Data對象來查看Object的更新信息。

我想在按下保存按鈕時重新加載對象的數據。

我試圖打電話給馬西德威的

- (void)tableView:(UITableView *)aTableView 
     didSelectRowAtIndexPath:(NSIndexPath *)indexPath 

,但都沒有取得成功,在更新從的DetailView的對象的詳細信息。

任何建議或代碼將不勝感激。

回答

1

您需要在主視圖中使用NSFetchedResultsController。將選定的核心數據對象傳遞給要編輯的詳細視圖。發生保存時,您可以利用NSFetchedResultsControllerDelegate協議實現表格視圖的自動回調。

在協議回調中,事情非常簡單。這裏是didChangeObject回調的完整存根。

-(void)controller:(NSFetchedResultsController *)controller 
    didChangeObject:(id)anObject atIndexPath:(NSIndexPath *)indexPath 
    forChangeType:(NSFetchedResultsChangeType)type 
    newIndexPath:(NSIndexPath *)newIndexPath { 

    if (type == NSFetchedResultsChangeDelete) {} 
    else if (type == NSFetchedResultsChangeInsert) {} 
    else if (type == NSFetchedResultsChangeMove) {} 
    else if (type == NSFetchedResultsChangeUpdate) {  
    [self.tableView reloadRowsAtIndexPaths:@[indexPath] 
      withRowAnimation:UITableViewRowAnimationAutomatic]; 
    UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath]; 
    [cell setSelected:YES animated:YES]; 
    } 
} 

選擇的東西(最後兩行)通常不是必需的,但有時選擇丟失了 - 如果你想保留選擇的視覺指示使用。