Проблема в ленивой загрузке представления таблицы
Я сильно поражен вопросом, где я пытаюсь заселить nestableview lazily
, Ниже мой подход.
Я создал собственный класс PRIList
где он имеет экземпляр массива для управления моделями. Я связал priList.items с контроллером массива в xib
где элементы не является экземпляром в PRIList
но для поддержки отложенной загрузки я реализовал методы countOfItems
а также objectInItemsAtIndex:
,
Первоначально, когда я заполняю PRIList
Я заполняю несколько объектов (скажем, 50) действительными объектами и отдыхаю с неисправными объектами. в objectInItemsAtIndex
Я проверяю, является ли элемент по определенному индексу действительным или неисправным. Если он неисправен, я выбираю следующий набор из 50 предметов.
Что я понимаю NSArrayController
вызывает метод objectInItemsAtIndex
только для видимых строк в табличном представлении. Но проблема здесь заключается в том, как только установить PRIList objectInItemsAtIndex
Метод вызывается для всех объектов. Это даже вызывается, когда какой-либо выбор изменяется в табличном представлении (трассировка стека показывает, что этот метод вызывается из [_NSModelObservingTracker startObservingModelObjectAtReferenceIndex]
)
В основном я хочу получать записи всякий раз, когда пользователь прокручивает вниз в табличном представлении.
Я придерживался того же подхода в другом проекте в Lion. Это сработало там. В настоящее время я нахожусь в Маверикс.
Я пытался переопределить isCompatibleWithResponsiveScrolling
в пользовательском представлении таблицы и вернул его в NO. Все еще не повезло.
Любая помощь очень ценится.
1 ответ
Во-первых, вы присвоили или связали дескрипторы сортировки контроллера массива? Или установить какие-либо столбцы для автоматического создания дескрипторов сортировки? (Я не уверен, что последнее имеет значение. Это зависит от того, отсортирован ли столбец по умолчанию.)
В любом случае, если контроллер массива чувствует необходимость сортировки объектов, чтобы упорядочить объекты, тогда ему нужно будет загрузить все содержимое. У меня сложилось впечатление, что это всегда так, в любом случае, хотя вы сообщаете, что это работает.
Для такой проблемы, я бы порекомендовал вам перейти на полное ручное управление. Это означает, что вы не используете привязки или контроллер массива. Используйте источник данных.