Я пытаюсь выбрать и изменить свойство имени недавно добавленного объекта.
В 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 в IB для выбора вновь вставленных объектов). Но табличное представление прокручивается до предпоследней строки, помещая новую строку сразу за пределы видимого представления.
Когда я попробую это,
[tableView scrollRowToVisible:[tableView selectedRow]];
или это,
[tableView scrollRowToVisible:[self selectionIndex]];
становится еще хуже: кажется, что 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];
Во всяком случае, указанное поле (в целях тестирования первая строка таблицы), кажется, переходит в режим редактирования всего на мгновение, но затем немедленно завершает редактирование.
Любая помощь будет принята с благодарностью.