Appcelerator принудительно отображает все строки TableView при загрузке

Вот дурочка. У меня есть TableView с программно добавленными пользовательскими TableViewRows. Они индивидуальны тем, что имеют метку с выравниванием по левому краю и переключатель с выравниванием по правому краю (подумайте об этом как о фильтре просмотра). Я вставил строку того же типа вверху, чтобы программно включить/выключить все переключатели.

Все это работает по назначению, ЗА ИСКЛЮЧЕНИЕМ случаев, когда у меня больше строк, чем может поместиться на экране, и я пытаюсь переключить все. В этом случае настраиваемые переключатели строк за пределами экрана не отображались при загрузке представления и, следовательно, не запускали их измененное событие при программной обработке.

Если я вручную прокручиваю вниз, чтобы принудительно отобразить все строки, а затем пытаюсь переключить все, все работает нормально.

Есть ли способ заставить все строки TableView (даже за пределами экрана) отображаться при загрузке представления? Или есть обходной путь, с которым я могу жить?


person Adam Milecki    schedule 15.04.2016    source источник
comment
Ленивая отрисовка — это встроенное поведение в iOS и Android SDK для повышения производительности. Я не верю, что мы можем это отключить.   -  person Fokke Zandbergen    schedule 18.04.2016


Ответы (1)


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

Затем я заставляю scrollToIndex перейти к последней строке, а затем сразу же возвращаюсь к первой строке. Поскольку я делаю это сразу после добавления строк, мне нужно использовать setTimeout, чтобы убедиться, что он покрывает время загрузки.

setTimeout(function() {
    $.tblOptions.scrollToIndex(lastIndex, { animated: false, position: Titanium.UI.iPhone.TableViewScrollPosition.BOTTOM });
}, 0);

Поскольку это создает нервный пользовательский интерфейс, я скрываю таблицу во время загрузки, показываю индикатор активности, а затем снова показываю таблицу после загрузки.

Это будет работать на данный момент, но мне все еще интересно, есть ли более простое решение.

person Adam Milecki    schedule 15.04.2016