NSWindow не отображается до тех пор, пока не будет щелкнуть, изменить размер и т. Д.

У меня есть окно с NSCollectionView, созданным с помощью Interface Builder. Существует NSArrayController, связанный с резервным хранилищем CoreData, которое заполняется во время запуска путем запуска асинхронного запроса. Привязка NSCollectionView к NSArrayController и т. Д., Похоже, на месте; однако окно отображается и остается пустым до тех пор, пока не будет произведен щелчок по нему, его размер и т. д., чтобы заставить его перерисоваться.

Вот некоторые вещи, которые я пробовал без каких-либо заметных изменений. (Они находятся в классе NSWindowController)

1) Используйте KVO для отслеживания завершения выборки CoreData. На данный момент я пробовал все без исключения из следующего:

[collectionView setNeedsDisplay:YES];
[[self window] setViewsNeedDisplay:YES];
[[self window] flushWindowIfNeeded];

2) Добавлен NSProgressIndicator, скрыть NSCollectionView при запуске, а затем, когда загрузка будет завершена (снова через мониторинг KVO), я скрываю индикатор прогресса и показываю представление коллекции.

У кого-нибудь есть советы / подсказки о том, что я здесь делаю неправильно?

кажется, пускает дело в ход.


person veader    schedule 16.03.2011    source источник
comment
Поскольку вы решили эту проблему, рассмотрите возможность добавления решения в качестве ответа, чтобы вопрос не отображался в разделе «Без ответа».   -  person jscs    schedule 17.03.2011


Ответы (1)


Благодаря другу, который увидел ссылку на это в Твиттере, у меня есть решение. Как только мой KVO срабатывает, добавляется вызов:

[arrayController fetch:self];

кажется, пускает дело в ход.

person Community    schedule 05.05.2011