Я пытаюсь выбрать и отредактировать свойство name для вновь добавленного объекта.
В OSX у меня есть контроллер массива, который отображает его содержимое в виде таблицы. У меня есть значения столбца таблицы, связанные (используя привязки) через свойства AC. Кроме того, я установил привязки содержимого табличного представления и selectionIndexes, чтобы они указывали на AC.
Мой подклассный AC имеет IBOutlet для табличного представления (называемого tableView) и содержит управляемые объекты из модели данных.
В моем AC я переопределяю метод add :.
- (void)add:(id)sender {
[super add:sender];
[[self managedObjectContext] processPendingChanges]; // no effect
[tableView reloadData]; // no effect
[tableView scrollRowToVisible:[[self arrangedObjects] count]-1];
}
Вновь добавленный объект появляется в табличном представлении в выбранном состоянии (у меня в AC установлен AC для выбора вновь вставленных объектов). Но табличное представление прокручивается вниз ко второй последней строке, помещая новую строку сразу за видимым представлением.
Когда я пытаюсь это сделать,
[tableView scrollRowToVisible:[tableView selectedRow]];
или это,
[tableView scrollRowToVisible:[self selectionIndex]];
становится еще хуже: выборочный индекс не обновляется корректно.
- (void)add:(id)sender {
[super add:sender];
NSLog(@"selectionIndex = %lu", [self selectionIndex]);
NSLog(@"number of objects in AC = %lu", [[self arrangedObjects] count]);
}
Запись selectionIndex показывает, что он всегда показывает предыдущий индекс выбора.
Регистрация количества объектов в АС всегда слишком мала.
Я пытаюсь манипулировать представлением таблицы слишком рано? Любые идеи, какой метод лучше подходит для переопределения?
О редактирующей части ..
Следующая инструкция мешает вышеуказанному scrollRowToVisible: методу, поскольку последний аргумент, похоже, также выбирает строку.
[tableView editColumn:0 row:0 withEvent:nil select:YES];
Во всяком случае, указанное поле (для целей тестирования первой строки таблицы), похоже, переходит в режим редактирования на мгновение, но затем сразу же завершает редактирование.
Любая помощь будет принята с благодарностью.