Cara menghapus sel kosong ekstra di TableViewController, iOS - Swift


118

Hai Saya punya TableViewControllerdengan dua sel statis, namun ketika ditampilkan, itu menunjukkan dua sel statis, dan kemudian semua sel kosong lainnya untuk tampilan tabel. Namun saya tidak ingin menampilkan sel-sel itu karena tidak berguna. Bagaimana cara menyembunyikan sel lainnya selain dari dua sel statis?

Jawaban:


403

dalam viewDidLoad()fungsi Anda tambahkan baris kode ini:

tableView.tableFooterView = UIView()

4
Singkat dan efektif! Bekerja seperti pesona!
yogipriyo

6
Apa artinya ini? Bisakah Anda Menjelaskan?
Jayprakash Dubey

Jawaban ini masih berlaku di Swift 3. Selain itu, jika Anda menyetel warna latar belakang tampilan tabel sama dengan warna latar belakang tampilan utama, itu akan membuatnya tampak seolah-olah footer hilang.
Mikha Montoya

Apakah ada solusi serupa untuk NSTableView? Itu tidak memiliki tableFooterView.
ixany

SWIFT 3.0 bekerja sangat baik dengantableView.tableFooterView = UIView()
Marcelo Gracietti

19

Pilih UITableView Anda, buka inspektur atribut dan ubah gayanya menjadi Dikelompokkan.

masukkan deskripsi gambar di sini


7

Untuk menambah ini, alasan mengapa pengaturan tableFooterViewuntuk UIView()menghapus baris adalah karena Anda mengatur UIView()objek kosong ke properti. Sesuai dokumentasi Apple:

var tableFooterView: UIView?

Oleh karena itu, menyetel UIView () kosong tidak akan menampilkan apa pun di bawah data Anda untuk properti ini.

Anda dapat mengembalikan baris kosong dengan mengatur ulang tableFooterViewke nilai default, seperti:

tableView.tableFooterView = nil

2
Maaf, tapi bukankah ini terlihat seperti retasan?
AOY

2
Tidak, ini adalah cara yang benar-benar valid untuk melakukannya. Jika Anda ingin menyetel tableFooterView kustom, Anda akan membuat UIView kustom, sebelum menyetelnya ke tableFooterView. Kemudian mengatur ulang ke nihil hanya mengembalikannya ke nilai default.
bersulang

Saya melihat. Terima kasih) Ini terlihat agak aneh bagi saya karena saya baru
mengenal

6

Mengatur tableFooterViewharus menghapus sel ekstra seperti tampilan.

   @IBOutlet weak var tableView: UITableView! {
        didSet {
            tableView.tableFooterView = UIView(frame: .zero)
        }
    }

3

Anda juga dapat mencapai ini di Storyboard dengan hanya menyeret tampilan ke area footer tampilan tabel, lalu menyetel tinggi dan warna latar belakangnya ke 1 dan menghapusnya masing-masing menggunakan pemeriksa properti.

(Ini mengasumsikan bahwa Anda tidak dapat atau tidak ingin hanya menggunakan pengaturan Gaya grup karena alasan tertentu. Jika tidak, lakukan saja.)


3

Swift 4 Menguraikan jawaban HorseT, geser kontrol pertama dari Tampilan Tabel Anda di papan cerita, ke kelas View Controller Anda dan buat outlet yang disebut tableView.

@IBOutlet weak var tableView: UITableView!

Kemudian, viewDidLoad Anda di Pengontrol Tampilan Anda akan terlihat seperti ini:

    override func viewDidLoad() {
    super.viewDidLoad()

    tableView.dataSource = self
    tableView.delegate = self

    tableView.tableFooterView = UIView()
}

3

Berdasarkan jawaban di atas dengan cepat .

tableView.tableFooterView = UIView(frame: .zero)

2

jika Anda ingin menghapus baris untuk semua UITableViewsdi aplikasi Anda, cukup tambahkan ekstensi seperti ini:

Swift 5.0.0

extension UITableView {

override open func didMoveToSuperview() {
    super.didMoveToSuperview()
    self.tableFooterView = UIView()

}

1
tableView.tableFooterView = UIView.init(frame: CGRect.zero)

Panggil kode ini di dalam viewWillAppearmetode. Dan akan berhasil


1

Tambahkan Kode Di Bawah Ini dalam fungsi " override func viewDidLoad () " Atau "override func viewWillAppear (_ animated: Bool)" Anda .

tblOutletName.tableFooterView = UIView ()


0

Cukup tambahkan:

tableView.tableFooterView = UIView()

Penjelasan:

Ini benar-benar valid dan bekerja dengan sempurna di swift 3. Oleh Karena Anda menyetel objek UIView () kosong ke properti, Mengatur tableFooterView ke UIView () menghapus baris.


-2

Jawabannya benar. Kami dapat mencapai ini dengan menambahkan

tableView.tableFooterView = UIView() // to remove extra cells in tableView

-3

Saya mencoba tableview.tableFooterView = UIView () dan tidak berhasil untuk saya. Saya menggunakan TableViewViewCell kustom, mungkin itulah sebabnya.

Saya menemukan hack tho. Di func numberOfRowsInSection saya

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return yourArrayClass.count - 1
}

Dan itu membuat UITableViewCell kustom ekstra kosong saya tidak ditampilkan lagi. Tentu saja yang ekstra kosong. Saya akan mengujinya lagi dengan menambahkan lebih banyak Sel. Sebagai referensi, saya menggunakan Swift 3, Firebase, kelas sel khusus, di dalam fungsi cellForRowAt.


Ini tidak akan menampilkan item terakhir dalam larik.
elarcoiris
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.