Как-то так у меня работает:
- (void)addEntity:(NSNotification *)notification {
// Create the core data representation, and add it as a child to the parent node
UABaseNode *node = [[UAModelController defaultModelController] createBaseNode];
[sourceList noteNumberOfRowsChanged];
NSInteger row = [sourceList rowForItem:node];
[sourceList scrollRowToVisible:row];
[sourceList selectRowIndexes:[NSIndexSet indexSetWithIndex:row] byExtendingSelection:NO];
[sourceList editColumn:0 row:row withEvent:nil select:YES];
}
Вы можете использовать rowForItem:
вместо многократной проверки itemAtRow:
.
Как правило, вы также хотите использовать [sourceList scrollRowToVisible:...]
в случае, если новая строка не видна и вы можете использовать noteNumberOfRowsChanged
вместо reloadData
, если только данные не изменились.
Стандартное поведение Mac - выбор содержимого вновь созданного элемента, поэтому используйте select:YES
.
Если это не поможет, в вашем коде происходит что-то еще, что приведенный выше фрагмент не сообщает ...
В общем, я бы действительно рекомендовал при изучении нового класса читать всю страницу на странице документации со списком доступных методов (исключая устаревшие методы) или, по крайней мере, все методы, доступные для задачи, которую вы пытаешься выполнить; вы получите гораздо лучшее представление о возможностях этого класса и с меньшей вероятностью будете использовать неуместный / неэффективный / неэффективный метод.