Jak usunąć dodatkowe puste komórki w TableViewController, iOS - Swift

118

Cześć, mam TableViewControllerdwie statyczne komórki, jednak po wyświetleniu pokazuje dwie statyczne komórki, a następnie wszystkie inne puste komórki dla widoku tabeli. Jednak nie chcę wyświetlać tych komórek, ponieważ są bezużyteczne. Jak ukryć pozostałe komórki poza dwoma statycznymi komórkami?

Stephen Fox
źródło

Odpowiedzi:

405

w swojej viewDidLoad()funkcji dodaj następujący wiersz kodu:

tableView.tableFooterView = UIView()
Horse T.
źródło
4
Krótko i skutecznie! Działało jak urok!
yogipriyo
6
Co to znaczy? Czy mógłbyś rozwinąć?
Jayprakash Dubey
Ta odpowiedź jest nadal aktualna w Swift 3. Ponadto, jeśli ustawisz kolor tła widoku tabeli na taki sam, jak kolor tła głównych widoków, będzie wyglądać tak, jakby zniknęła stopka.
Micah Montoya
Czy jest podobne rozwiązanie dla NSTableView? Nie ma tableFooterView.
IXany
SWIFT 3.0 działa świetnie ztableView.tableFooterView = UIView()
Marcelo Gracietti,
19

Wybierz swój UITableView, przejdź do inspektora atrybutów i zmień styl na Grouped.

wprowadź opis obrazu tutaj

bakalolo
źródło
7

Aby dodać do tego, dlatego ustawienie tableFooterViewsię UIView()dlatego, że ustawienie jest pusty usuwa wiersze UIView()obiekt do nieruchomości. Zgodnie z dokumentacją Apple:

var tableFooterView: UIView?

Dlatego ustawienie pustej funkcji UIView () nie spowoduje wyświetlenia niczego poniżej danych dla tej właściwości.

Możesz przywrócić puste wiersze, resetując tableFooterViewdo wartości domyślnej, na przykład:

tableView.tableFooterView = nil
toast
źródło
2
Przepraszam, ale czy to nie wygląda na włamanie?
AOY
2
Nie, to jest całkowicie słuszny sposób na zrobienie tego. Jeśli chcesz ustawić niestandardowy tableFooterView, musisz utworzyć niestandardowy UIView, przed ustawieniem go na tableFooterView. Następnie zresetowanie go do zera oznacza po prostu przywrócenie wartości domyślnej.
toast
Widzę. Dzięki) Dla mnie wygląda to trochę dziwnie, ponieważ jestem nowy w szybkim
AOY
6

Ustawienie tableFooterViewpowinno usunąć dodatkowe widoki przypominające komórki.

   @IBOutlet weak var tableView: UITableView! {
        didSet {
            tableView.tableFooterView = UIView(frame: .zero)
        }
    }
Giang
źródło
3

Możesz to osiągnąć również w Storyboard, po prostu przeciągając widok do obszaru stopki widoku tabeli, a następnie ustaw jego wysokość i kolor tła na 1 i wyczyść odpowiednio za pomocą Inspektora właściwości.

(Zakłada się, że z jakiegoś powodu nie możesz lub nie chcesz po prostu używać ustawienia Styl grupy. W przeciwnym razie po prostu zrób to.)

quickthyme
źródło
3

Swift 4 Rozwijając odpowiedź HorseT, najpierw przeciągnij kontrolkę z widoku tabeli w swoim scenorysie, do klasy kontrolera widoku i utwórz gniazdko o nazwie tableView.

@IBOutlet weak var tableView: UITableView!

Następnie Twój viewDidLoad w kontrolerze widoku powinien wyglądać mniej więcej tak:

    override func viewDidLoad() {
    super.viewDidLoad()

    tableView.dataSource = self
    tableView.delegate = self

    tableView.tableFooterView = UIView()
}
elarcoiris
źródło
3

Na podstawie powyższych odpowiedzi w szybki .

tableView.tableFooterView = UIView(frame: .zero)
Rizwan Mehboob
źródło
2

jeśli chcesz usunąć wszystkie wiersze UITableViewsw swojej aplikacji, po prostu dodaj takie rozszerzenie:

Swift 5.0

extension UITableView {

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

}
mkhoshpour
źródło
2
tableView.tableFooterView = UIView.init(frame: CGRect.zero)

Wywołaj ten kod w viewDidLoadmetodzie.

Mannopson
źródło
1

Dodaj poniższy kod w swoich funkcjach "override func viewDidLoad ( ) " lub "override func viewWillAppear (_ animated: Bool)" .

tblOutletName.tableFooterView = UIView ()

Dhaval Gevariya
źródło
0

Po prostu dodaj:

tableView.tableFooterView = UIView()

Wyjaśnienie:

Jest to całkowicie poprawne i działa doskonale w swift 3.By Ponieważ ustawiasz pusty obiekt UIView () na właściwość, ustawienie tableFooterView na UIView () usuwa wiersze.

Tejas
źródło
-2

Abobe anwer ma rację. Możemy to osiągnąć, dodając

tableView.tableFooterView = UIView() // to remove extra cells in tableView
Ummar Ahmed
źródło
-3

Wypróbowałem tableview.tableFooterView = UIView () i nie działało to dla mnie. Używam niestandardowego TableViewViewCell, być może dlatego.

Znalazłem hack tho. W moim func numberOfRowsInSection

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

I to sprawia, że ​​mój dodatkowy pusty niestandardowy UITableViewCell nie jest już wyświetlany. Oczywiście jest to wyjątkowo puste. Przetestuję to trochę więcej, dodając więcej komórek. Dla porównania używam Swift 3, Firebase, niestandardowej klasy komórek, wewnątrz funkcji cellForRowAt.

Cory Billeaud
źródło
Nie spowoduje to wyświetlenia ostatniej pozycji w tablicy.
elarcoiris