プロトコルのプロパティが既にあるためdelegate
、ポップオーバーコントローラー以外の名前のプロパティが必要だと思います。多分か何か。UITableViewController
delegate
UITableViewDelegate
masterTable
次にselectedObject:
、ルート UITableView の実装で、行を挿入するか、データ配列とreload
テーブルに追加できます。
おっと、私の悪い... @geraldWilliamは正しいです、UITableViewControllerにはデリゲートプロパティがありません...
あなたが持っているものはうまくいくはずです...だから、デリゲートでselectedObject:メソッドが呼び出されますか? もしそうなら、あなたはその方法で何をしますか?ルート ビューのデータ セット (配列、辞書、またはデータベース) にオブジェクトを追加し、そのテーブルビューに行を挿入 (またはデータをリロード) すると、機能するはずです。
ここに私のために働くいくつかのコードがあります。ポップオーバーからではなく、プッシュされたビューからのものですが、違いを生む理由はありません:
- (ThingStatus) thingPicker: (ThingPickerTableViewController *) thingPicker didSelectThing: (Thing *) thing {
NSLog( @"Entering %s", __func__ );
// Dismiss the pushed view controller (for you, the popover)
[self.navigationController popViewControllerAnimated: YES];
NSArray *startingList = self.currentCellObjectList;
[self.databaseManager addThing: thing];
NSArray *endingList = self.databaseManager.thingsForTableView;
// Figure out the differences adding made...
DiffResult *changes = [startingList simpleDiffWithArray: endingList];
NSLog( @"%d deletions, %d insertions", changes.deletionCount, changes.insertionCount );
// I only handle insertions in this code... deletions would be similar
__block NSUInteger objIdx = 0;
NSMutableArray *changeableThingList = [startingList mutableCopy];
[changes.insertionIndexes enumerateIndexesUsingBlock: ^( NSUInteger idx, BOOL *stop ) {
NSLog( @" - insert %@ at %d", [[changes.insertionObjects objectAtIndex: objIdx] name], idx );
NSIndexPath *indexPath = [NSIndexPath indexPathForRow: idx inSection: 0];
[changeableThingList insertObject: [changes.insertionObjects objectAtIndex: objIdx] atIndex: idx];
self.currentCellObjectList = changeableThingList;
[self.tableView insertRowsAtIndexPaths: [NSArray arrayWithObject: indexPath] withRowAnimation: UITableViewRowAnimationRight];
++objIdx;
}];
[self.databaseManager save];
return [self.databaseManager: thingStatus];
}