Я решил похожую проблему. Я вставил элемент в начало таблицы, и я хотел выбрать его сразу после.
Шаг 1. - Создать переключатель для сохранения состояния, если он выберет первую строку
@implementation MyTableViewController {
BOOL _selectFirstRow;
}
Шаг 2. - Переключите его на ДА при вставке
- (void) controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type newIndexPath:(NSIndexPath *)newIndexPath
{
UITableView *tableView = self.tableView;
switch (type) {
case NSFetchedResultsChangeInsert:
[tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath]
withRowAnimation:UITableViewRowAnimationFade];
_selectFirstRow = YES;
break;
Шаг 3. - Создать метод для выбора первой строки
- (void) selectFirstTableRow
{
[self.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]
animated:YES
scrollPosition:UITableViewScrollPositionTop];
}
Шаг 4. - Вызвать метод для выбора строки сразу после обновления таблицы
- (void) controllerDidChangeContent:(NSFetchedResultsController *)controller
{
[self.tableView endUpdates];
if (_selectFirstRow) {
[self selectFirstTableRow];
_selectFirstRow = NO;
}
}
Вот и все. Если вы хотите выбрать другую строку, сохраните newIndexPath в параметре класса. Это все. Я надеюсь, что это поможет вам. Cia!