1

Мне нужно динамически загружать данные, когда пользователь прокручивает NSTableView. Например, таблица может отображать 50 строк, и по мере прокрутки дальше мне нужно получить больше данных из сети. Количество объектов/строк известно заранее, поэтому я хочу, чтобы таблица имела правильное количество строк с самого начала, но показывала пустые ячейки во время загрузки данных.NSTableViewDataSource или NSArrayController?

Я использую основные данные, поэтому легко подключить таблицу к моей модели, используя привязки. Это также позаботится о том, чтобы ячейки обновлялись по мере поступления данных и анализировались. Я попытался выяснить, как это сделать, путем подкласса NSArrayController, но из того, что я могу сказать, нет информации, текущей от таблицы к контроллеру, о том, какие строки действительно нужны для данных. Поэтому я думаю об использовании NSTableViewDataSource, где я могу легко проверить, прокручивается ли таблица за пределами строк, для которых доступны данные. С другой стороны, я не знаю, смогу ли я получить ячейки, автоматически обновляющиеся так же легко с помощью этого решения.

ответ

3

В случае, если кто попадается это, вот мой собственный ответ:

Да, вам нужно реализовать NSTableViewDataSource на контроллере, наблюдать изменения в данных и вызвать reloadData вручную на столе, когда происходят изменения. Основная причина этого заключается в том, что вы можете отложить загрузку данных до тех пор, пока они не понадобятся (когда прокручивается просмотр таблицы). Использование протокола источника данных информирует вас о том, какие индексы запрашиваются.