Я думаю, что у вас должно быть имущество с именем, отличным от delegate
, в вашем контроллере popover, поскольку 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];
}
Какой результат вы получите с текущим кодом? Выполняется ли этот оператор - [_delegate selectedObject: _currentObject] ;? Вы вошли в систему? Как контроллер представления корневой таблицы задал себя как делегат Popover? – rdelmar