Kepalaku sedang memikirkan yang satu ini, dan Google tidak menemukan apa pun. Saya akhirnya berhasil dan berpikir saya akan menulisnya di sini demi orang berikutnya.
Anda memiliki UITableView
dengan banyak bagian. Setiap bagian homogen, tetapi tabel secara keseluruhan heterogen. Jadi, Anda mungkin ingin mengizinkan pengurutan ulang baris dalam suatu bagian, tetapi tidak di seluruh bagian. Mungkin Anda bahkan hanya ingin satu bagian dapat disusun ulang sama sekali (itu kasus saya). Jika Anda melihat, seperti saya sebelumnya, di UITableViewDataSourceDelegate
Anda tidak akan menemukan pemberitahuan tentang kapan akan membiarkan Anda memindahkan baris antar bagian. Anda mendapatkannya ketika mulai memindahkan baris (yang bagus) dan satu ketika sudah dipindahkan dan Anda mendapat kesempatan untuk menyinkronkan dengan barang-barang internal Anda. Tidak membantu.
Jadi bagaimana Anda dapat mencegah pemesanan ulang antar bagian?
Saya akan memposting apa yang saya lakukan sebagai jawaban terpisah, membiarkannya terbuka bagi orang lain untuk memposting jawaban yang lebih baik!
sumber
Jawaban:
Implementasi ini akan mencegah pengurutan ulang di luar bagian asli seperti jawaban Phil, tetapi itu juga akan menjepret rekaman ke baris pertama atau terakhir dari bagian, tergantung di mana seret pergi, bukan di mana itu dimulai.
sumber
UIKit.UITableViewController.CustomizeMoveTarget
, bagi siapa pun yang bertanya-tanya.Cukup sederhana, sungguh.
UITableViewDelegate memiliki metode:
Ini dipanggil saat pengguna mengarahkan kursor ke titik penurunan potensial. Anda mendapat kesempatan untuk berkata, "tidak! Jangan jatuhkan di sana! Jatuhkan di sini saja". Anda dapat mengembalikan jalur indeks yang berbeda ke yang diusulkan.
Yang saya lakukan hanyalah memeriksa apakah indeks bagian cocok. Jika mereka berhasil maka bagus, kembalikan jalan yang diusulkan. jika tidak, kembalikan jalur sumber. Ini juga dengan baik mencegah baris di bagian lain bahkan keluar dari jalan saat Anda menyeret - dan baris yang diseret akan kembali ke posisi semula saat Anda mencoba memindahkannya ke bagian lain.
sumber
Versi swifty swift dari jawaban Jason untuk kamu para pemalas:
Cepat 3, 4 & 5
Cepat 1 & 2
sumber
Anda dapat mencegah pergerakan baris di antara bagian menggunakan metode di bawah ini. Hanya saja, jangan biarkan ada gerakan di antara bagian tersebut. Anda bahkan dapat mengontrol pergerakan baris tertentu dalam suatu bagian. mis. baris terakhir dalam Bagian.
Berikut contohnya:
sumber
Cepat 3:
sumber
Dari pada @Jason Harwig, kode di bawah ini berfungsi dengan benar.
sumber
Untuk tidak mengubah posisi antara bagian Swift3
sumber