NSWindow не рисуется, пока не нажмете, не измените размер и т. Д. - PullRequest
3 голосов
/ 16 марта 2011

У меня есть окно с 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), я скрываюиндикатор прогресса и отображение коллекции.

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

, кажется, заводит дело.

1 Ответ

0 голосов
/ 05 мая 2011

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

[arrayController fetch:self];

, кажется, заводит вещи.

...