Проблема в ленивой загрузке представления таблицы

Я сильно поражен вопросом, где я пытаюсь заселить nestableview lazily, Ниже мой подход.

Я создал собственный класс PRIList где он имеет экземпляр массива для управления моделями. Я связал priList.items с контроллером массива в xib где элементы не является экземпляром в PRIList но для поддержки отложенной загрузки я реализовал методы countOfItems а также objectInItemsAtIndex:,

Первоначально, когда я заполняю PRIList Я заполняю несколько объектов (скажем, 50) действительными объектами и отдыхаю с неисправными объектами. в objectInItemsAtIndex Я проверяю, является ли элемент по определенному индексу действительным или неисправным. Если он неисправен, я выбираю следующий набор из 50 предметов.

Что я понимаю NSArrayController вызывает метод objectInItemsAtIndex только для видимых строк в табличном представлении. Но проблема здесь заключается в том, как только установить PRIList objectInItemsAtIndex Метод вызывается для всех объектов. Это даже вызывается, когда какой-либо выбор изменяется в табличном представлении (трассировка стека показывает, что этот метод вызывается из [_NSModelObservingTracker startObservingModelObjectAtReferenceIndex])

В основном я хочу получать записи всякий раз, когда пользователь прокручивает вниз в табличном представлении.

Я придерживался того же подхода в другом проекте в Lion. Это сработало там. В настоящее время я нахожусь в Маверикс.

Я пытался переопределить isCompatibleWithResponsiveScrolling в пользовательском представлении таблицы и вернул его в NO. Все еще не повезло.

Любая помощь очень ценится.

1 ответ

Решение

Во-первых, вы присвоили или связали дескрипторы сортировки контроллера массива? Или установить какие-либо столбцы для автоматического создания дескрипторов сортировки? (Я не уверен, что последнее имеет значение. Это зависит от того, отсортирован ли столбец по умолчанию.)

В любом случае, если контроллер массива чувствует необходимость сортировки объектов, чтобы упорядочить объекты, тогда ему нужно будет загрузить все содержимое. У меня сложилось впечатление, что это всегда так, в любом случае, хотя вы сообщаете, что это работает.

Для такой проблемы, я бы порекомендовал вам перейти на полное ручное управление. Это означает, что вы не используете привязки или контроллер массива. Используйте источник данных.

Другие вопросы по тегам