Saya mengembangkan aplikasi yang menggunakan SQLite. Saya ingin menampilkan daftar pengguna (UITableView) menggunakan mekanisme penomoran halaman. Adakah yang bisa memberi tahu saya cara memuat lebih banyak data di daftar saya saat pengguna menggulir ke akhir daftar (seperti di halaman beranda pada aplikasi Facebook)?
ios
iphone
uitableview
pagination
rokridi
sumber
sumber
launchReload
tanggung jawab metode untuk menanganinya (misalnya, hanya satu tindakan muat ulang asinkron pada satu waktu)if !lastItemReached && indexPath.row == dataArray!.hits.count - 1 {
self.launchReload
caranya?Cepat
Metode 1: Gulir ke bawah
Ini adalah versi Swift dari jawaban Pedro Romão . Saat pengguna berhenti menggulir, ia memeriksa apakah telah mencapai bagian bawah.
Metode 2: Mencapai baris terakhir
Dan inilah jawaban shinyuX versi Swift . Ia memeriksa apakah pengguna telah mencapai baris terakhir.
Contoh
loadMore()
metodeSaya menyiapkan tiga variabel kelas ini untuk mengambil kumpulan data.
Ini adalah fungsi untuk memuat lebih banyak item dari database ke dalam tampilan tabel.
sumber
Lebih baik menggunakan
willDisplayCell
metode untuk memeriksa apakah sel mana yang akan dimuat. Setelah kita mendapatkan arusindexPath.row
terakhir kita dapat memuat lebih banyak sel. Ini akan memuat lebih banyak sel saat menggulir ke bawah.sumber
Detail
Larutan
Pemakaian
init
penanganan
Sampel Lengkap
Hasil
sumber
Jika Anda menggunakan Core Data dan
NSFetchedResultsController
, makaloadMore
akan terlihat seperti berikut:sumber
Saya telah menerapkan satu solusi yang saya temukan di stackoverflow, dan berfungsi dengan baik, tetapi menurut saya solusi shinyuX sangat mudah diterapkan dan berfungsi dengan baik untuk usulan saya. Jika seseorang menginginkan solusi yang berbeda dapat menggunakan yang ini di bawah ini.
sumber
Detail
Larutan
tambahkan Ekstensi UITableView + ini di file baru Anda
Sekarang, cukup tambahkan baris kode berikut dalam Metode UITableViewDelegate willDisplay Cell di ViewController Anda dan pastikan tableView.delegate = self
Hasil
Itu saja .. Semoga ini membantu. Terima kasih
sumber
Gunakan batas dan offset dalam kueri Anda dan isi tampilan tabel Anda dengan konten itu. Saat pengguna menggulir ke bawah, muat offset berikutnya.
Terapkan
tableView:willDisplayCell:forRowAtIndexPath:
metode di AndaUITableViewDelegate
dan periksa untuk melihat apakah itu baris terakhirsumber
Tautan di bawah ini akan memberikan kode contoh. # Swift3
Pengguna perlu menarik sel tampilan tabel terakhir, setidaknya tinggi 2 sel untuk mengambil lebih banyak data dari server.
Anda akan menemukan sel Proses juga untuk menunjukkan proses pemuatan seperti pada sel terakhir.
Ada di Swift3
https://github.com/yogendrabagoriya/YBTableViewPullData
sumber
Satu lagi opsi untuk digunakan ( Swift 3 dan iOS 10+):
Untuk halaman yang agak kecil (~ 10 item) Anda mungkin ingin menambahkan data secara manual untuk halaman 1 dan 2 karena nextPage mungkin berada di sekitar 1-2 hingga tabel memiliki beberapa item untuk di-scroll dengan baik. Tapi itu akan bekerja dengan baik untuk semua halaman berikutnya.
sumber
penjelasan yang sangat bagus di posting ini.
http://useyourloaf.com/blog/2010/10/02/dynamically-loading-new-rows-into-a-table.html
sederhana Anda harus menambahkan baris terakhir dan menyembunyikannya dan ketika baris tabel mencapai baris terakhir daripada menampilkan baris dan memuat lebih banyak item.
sumber
Anda harus memeriksa ios UITableViewDataSourcePrefetching.
sumber
untuk memuat dari API, Ini berfungsi untuk saya, Xcode 10 , swift 4.2 :
1- buat file Swift Baru dan lakukan seperti ini:
2- Dalam file ViewController Anda (TableView Controller):
jika menggunakan tableView di Delegasi set viewController Anda , sumber data sendiri dalam viewDidLoad.
sumber
Hanya ingin berbagi pendekatan ini:
NSLog(...);
keluarannya akan seperti ini:Ini bagus untuk menampilkan data yang disimpan secara lokal. Awalnya saya mendeklarasikan dataLimit ke 25, itu berarti uitableview akan memiliki 0-24 (awalnya).
Jika pengguna menggulir ke bawah dan sel terakhir terlihat
dataLimit
akan ditambahkan dengan 25 ...Catatan: Ini lebih seperti paging data UITableView, :)
sumber
sumber
Cara terbaik untuk mengatasi masalah ini adalah dengan menambahkan sel di bagian bawah tabel Anda, dan sel ini akan menampung indikator.
Anda perlu segera menambahkan ini:
lihat kode di bawah ini:
Untuk tampilan tabel: numOfRows:
cellForRawAt indexPath:
Jika Anda memperhatikan bahwa sel pemuatan saya dibuat dari file pena. Video ini akan menjelaskan apa yang saya lakukan.
sumber
sumber
Untuk Xcode 10.1, Swift 4.2
Video ini sepertinya tutorial yang bagus!
Proyek Pemula / Selesai: https://github.com/RobCanton/Swift-Infinite-Scrolling-Example
sumber