TableViewController, iOS'ta fazladan boş hücreler nasıl kaldırılır - Swift


118

Merhaba TableViewController, iki statik hücrem var, ancak görüntülendiğinde, iki statik hücreyi ve ardından tablo görünümü için diğer tüm boş hücreleri gösteriyor. Ancak bu hücreleri işe yaramaz oldukları için göstermek istemiyorum. Geri kalan hücreleri iki statik hücreden ayrı olarak nasıl gizlerim?

Yanıtlar:


405

senin içinde viewDidLoad()fonksiyonun bu kod satırı ekleyin:

tableView.tableFooterView = UIView()

4
Kısa ve etkili! Cazibe gibi çalıştı!
yogipriyo

6
Ne anlama geliyor? Ayrıntılandırır mısınız?
Jayprakash Dubey

Bu cevap Swift 3'te hala geçerlidir. Ayrıca, tablo görünümü arka plan rengini ana görünümlerin arka plan rengiyle aynı şekilde ayarlarsanız, altbilgi gitmiş gibi görünmesini sağlar.
Micah Montoya

İçin benzer bir çözüm var mı NSTableView? Bir tableFooterView.
ixany

SWIFT 3.0 harika çalışıyortableView.tableFooterView = UIView()
Marcelo Gracietti

19

UITableView'unuzu seçin, nitelik denetçisine gidin ve stili Gruplandırılmış olarak değiştirin.

görüntü açıklamasını buraya girin


7

Bu eklemek için, ayar nedeni tableFooterViewile UIView()boş bir ayar çünkü uzaklaşmaların satırları olan UIView()mülke nesneyi. Apple belgelerine göre:

var tableFooterView: UIView?

Bu nedenle boş bir UIView () ayarlamak, bu mülk için verilerinizin altında hiçbir şey göstermez.

Boş satırları aşağıdaki tableFooterViewgibi varsayılan değere sıfırlayarak geri getirebilirsiniz :

tableView.tableFooterView = nil

2
Üzgünüm ama bu bir hack gibi görünmüyor mu?
AOY

2
Hayır, bu tamamen geçerli bir yöntemdir. Özel bir tableFooterView ayarlamak istiyorsanız, tableFooterView olarak ayarlamadan önce özel bir UIView oluşturursunuz. Sonra sıfıra sıfırlamak, onu varsayılan değerine döndürmektir.
tost

Anlıyorum. Teşekkürler)
Swift'e

6

Ayarlamak, tableFooterViewfazladan hücre benzeri görünümleri kaldırmalıdır.

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

3

Bunu, Storyboard'da da bir görünümü tablo görünümünün altbilgi alanına sürükleyerek ve ardından özellik denetçisini kullanarak yüksekliğini ve arka plan rengini sırasıyla 1'e ve temizleyerek elde edebilirsiniz.

(Bu, herhangi bir nedenle Grup stili ayarını kullanamayacağınızı veya kullanmak istemediğinizi varsayar. Aksi takdirde, bunu yapın.)


3

Swift 4 HorseT'un cevabını ayrıntılı olarak açıklarken, ilk önce storyboard'unuzdaki Tablo Görünümünüzden View Controller sınıfınıza sürükleyin ve tableView adlı bir çıkış oluşturun.

@IBOutlet weak var tableView: UITableView!

Ardından, Görünüm Denetleyicinizdeki viewDidLoad şunun gibi görünmelidir:

    override func viewDidLoad() {
    super.viewDidLoad()

    tableView.dataSource = self
    tableView.delegate = self

    tableView.tableFooterView = UIView()
}

3

Hızlı bir şekilde yukarıdaki cevaplara dayanarak .

tableView.tableFooterView = UIView(frame: .zero)

2

UITableViewsuygulamanızdaki tüm satırları kaldırmak istiyorsanız , şuna benzer bir uzantı eklemeniz yeterlidir:

Swift 5.0

extension UITableView {

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

}

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

Bu kodu viewDidLoadyöntemde çağırın .


1

" Override func viewDidLoad () " veya "override func viewWillAppear (_ animated: Bool)" işlevlerinize Kodun Altını Ekleyin .

tblOutletName.tableFooterView = UIView ()


0

Basitçe ekleyin:

tableView.tableFooterView = UIView()

Açıklama:

Bu tamamen geçerlidir ve hızlı bir şekilde 3.By'de mükemmel çalışır. Özelliğe boş bir UIView () nesnesi ayarladığınızdan, tableFooterView öğesini UIView () olarak ayarlamak satırları kaldırır.


-2

Abobe anwer haklı. Bunu ekleyerek başarabiliriz

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

-3

Tableview.tableFooterView = UIView () denedim ve benim için çalışmadı. Özel bir TableViewViewCell kullanıyorum, belki de nedeni budur.

Bir hack tho buldum. Func numberOfRowsInSection'da

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

Ve bu, fazladan boş özel UITableViewCell'imi artık görüntülenmiyor. Tabii ki fazladan boş olanı. Daha fazla Hücre ekleyerek biraz daha test edeceğim. Başvuru için, cellForRowAt işlevinin içinde özel bir hücre sınıfı olan Swift 3, Firebase kullanıyorum.


Bu, dizideki son öğeyi göstermeyecektir.
elarcoiris
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.