Appcelerator Memaksa Semua Baris TableView untuk Dirender saat Dimuat

Ini sangat menyedihkan. Saya memiliki TableView dengan TableViewRows khusus yang ditambahkan secara terprogram. Mereka dibuat khusus karena memiliki label rata kiri dan tombol rata kanan (anggap saja sebagai filter jelajah). Saya memasukkan jenis baris yang sama di bagian atas untuk mengaktifkan/menonaktifkan semua sakelar secara terprogram.

Semua ini berfungsi sebagaimana mestinya KECUALI ketika saya memiliki lebih banyak baris daripada yang dapat ditampung di layar dan mencoba untuk beralih semua. Dalam hal ini, baris kustom yang beralih di luar layar belum dirender saat tampilan dimuat dan oleh karena itu tidak mengaktifkan peristiwa yang diubah saat ditangani secara terprogram.

Jika saya menggulir ke bawah secara manual untuk memaksa merender semua baris lalu mencoba mengaktifkan semua, itu berfungsi dengan baik.

Apakah ada cara untuk memaksa semua baris TableView (bahkan di luar layar) untuk dirender saat tampilan dimuat? Atau adakah solusi yang bisa saya jalani?


person Adam Milecki    schedule 15.04.2016    source sumber
comment
Render lambat adalah perilaku bawaan di SDK iOS dan Android untuk meningkatkan kinerja. Saya tidak yakin kita bisa menonaktifkannya.   -  person Fokke Zandbergen    schedule 18.04.2016


Jawaban (1)


Inilah solusi saya saat ini. Di jendela acara OnOpen, saya memanggil fungsi saya untuk menginisialisasi data tabel. Ini penting karena ini memastikan pemuatan pertama berfungsi.

Lalu saya paksa scrollToIndex ke baris terakhir lalu segera scrollToIndex kembali ke baris pertama. Karena saya melakukan ini tepat setelah menambahkan baris, saya perlu menggunakan setTimeout untuk memastikan ini mencakup waktu buka.

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

Karena ini menciptakan pengalaman pengguna yang gelisah, saya menyembunyikan tabel selama memuat, menampilkan indikator aktivitas, lalu menampilkan kembali tabel setelah memuat.

Ini akan berfungsi untuk saat ini tetapi saya masih bertanya-tanya apakah ada solusi yang lebih sederhana.

person Adam Milecki    schedule 15.04.2016