ФоноваяКак установить настройку по умолчанию для NSTreeController при запуске?
Я построил список источников (по аналогии с Itunes и др.) В моем какао приложение.
У меня есть NSOutlineView с Value столбца, связанного с arrangedObjects.name ключевой путь к NSTreeController.
NSTreeController обращается к Объектам JGSourceListNode в ядре Хранилище данных.
У меня есть три подкласса JGSourceListNode - JGProjectNode, JGGroupNode и JGFolderNode.
Я выбралIndexPaths на NSTreeController, привязанный к NSArray с именем selectedIndexPaths в моем делете делегата.
При запуске, я ищу для узлов группы, и если они не находятся в хранилище данных ядра я создаю их:
if ([allGroupNodes count] == 0) {
JGGroupNode *rootTrainingNode = [JGGroupNode insertInManagedObjectContext:context];
[rootTrainingNode setNodeName:@"TRAIN"];
JGProjectNode *childUntrainedNode = [JGProjectNode insertInManagedObjectContext:context];
[childUntrainedNode setParent:rootTrainingNode];
[childUntrainedNode setNodeName:@"Untrained"];
JGGroupNode *rootBrowsingNode = [JGGroupNode insertInManagedObjectContext:context];
[rootBrowsingNode setNodeName:@"BROWSE"];
JGFolderNode *childFolder = [JGFolderNode insertInManagedObjectContext:context];
[childFolder setNodeName:@"Folder"];
[childFolder setParent:rootBrowsingNode];
[context save:nil];
}
Что я Хочу
Когда я начинаю приложение, я хочу, чтобы обе группы верхнего уровня были расширены и «Неподготовлено» было выделено, как показано:
My Window http://synapticmishap.co.uk/Window.jpeg
Проблема
Я поставил следующий код в applicationDidFinishLaunching:
способе приложения делегата:
[sourceListOutlineView expandItem:[sourceListOutlineView itemAtRow:0]];
[sourceListOutlineView expandItem:[sourceListOutlineView itemAtRow:2]];
NSIndexPath *rootIndexPath = [NSIndexPath indexPathWithIndex:0];
NSIndexPath *childIndexPath = [rootIndexPath indexPathByAddingIndex:0];
[self setSelectedIndexPaths:[NSArray arrayWithObject:childIndexPath]];
но контурный вид, кажется, не были подготовлены еще, так что этот код ничего не делает ,
В идеале, в конечном итоге, я хочу сохранить последний выбранный пользователем пользователь и восстановить его при перезагрузке.
Вопрос
Я уверен, что это возможно, используя некоторые сумасшедшие КВО наблюдать, когда NSTreeController или NSOutlineView получает заселена затем разверните пункты и изменить выбор, но чувствует себя неуклюжим и слишком много, как работа вокруг.
Как бы я сделал это элегантно?
Вероятно, вы должны установить задержку на «0», которая отправит сообщение на следующей итерации цикла событий без видимой «задержки». –
Эй, Роб, это действительно работало. Я удивлен, но я думаю, мне просто нужно было ждать следующего цикла событий, как вы упомянули ... и, конечно, задержка 0 лучше/быстрее. Благодарю. – regulus6633