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?

Stephen Fox
sumber

Jawaban:

403

dalam viewDidLoad()fungsi Anda tambahkan baris kode ini:

tableView.tableFooterView = UIView()
KudaT
sumber
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

bakalolo
sumber
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
roti panggang
sumber
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)
        }
    }
Giang
sumber
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.)

quickthyme
sumber
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()
}
elarcoiris
sumber
3

Berdasarkan jawaban di atas dengan cepat .

tableView.tableFooterView = UIView(frame: .zero)
Rizwan Mehboob
sumber
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()

}
mkhoshpour.dll
sumber
1
tableView.tableFooterView = UIView.init(frame: CGRect.zero)

Panggil kode ini di dalam viewWillAppearmetode. Dan akan berhasil

Mannopson
sumber
1

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

tblOutletName.tableFooterView = UIView ()

Dhaval Gevariya
sumber
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.

Tejas
sumber
-2

Jawabannya benar. Kami dapat mencapai ini dengan menambahkan

tableView.tableFooterView = UIView() // to remove extra cells in tableView
Ummar Ahmed
sumber
-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.

Cory Billeaud
sumber
Ini tidak akan menampilkan item terakhir dalam larik.
elarcoiris