NSCollectionView с сетевым образом
У меня есть NSCollectionView
где одно из подпредставлений является NSImageView
, Фактическое изображение требует загрузки с веб-сервера после прохождения вызова API (так что фактически два сетевых запроса). Очевидно, мне нужно загрузить изображение асинхронно. Я могу связать NSImageView
ценность для NSValueTransformer
это превращает идентификатор модели в NSImage
, но как мне реализовать NSValueTransformer
? Ожидает немедленного возвращения из transformedValue:
метод, тогда как я могу только запустить сетевой запрос там. Я не хочу блокировать поток, используя синхронную сеть.
1 ответ
Вместо использования NSValueTransformer, который на самом деле немедленно возвратится, создайте подкласс элемента представления коллекции. Для каждого элемента запускается транзакция в этом подклассе асинхронно. Сохраните IBOutlet для NSImage в своем подклассе, чтобы при получении ответа от сервера jus устанавливали образ с помощью этого IBOulet. При таком подходе, когда элемент создается, соответствующий контроллер представления входит в изображение. Подклассы дают вам контроль над представлением и как его загрузить.
Надеюсь, это поможет.