0

新しいiPadUISplitViewControllerアプリを開発しています。左側に、CoreDataオブジェクトを含むMasterViewがあります。CoreDataオブジェクトを選択すると、その詳細がDetailViewに表示されます。オブジェクトの詳細は、DetailViewで編集および変更し、DetailViewのボタンを押すことで保存できます。

保存ボタンが押された後、ユーザーはMasterViewでCore Dataオブジェクトを再度選択して、オブジェクトの更新された情報を表示する必要があります。

保存ボタンが押されたときにオブジェクトのデータをリロードしたい。

MasterViewを呼び出そうとしました

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

ただし、detailViewからオブジェクトの詳細を更新することはできませんでした。

任意の提案やコードをいただければ幸いです。

4

1 に答える 1

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];
  }
}

通常、選択項目(最後の2行)は必要ありませんが、選択が失われることがあります。選択の視覚的な表示を保持したい場合は、これを使用してください。

于 2012-12-16T17:24:00.490 に答える