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?

Odpowiedzi:


405

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

tableView.tableFooterView = UIView()

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


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

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)
        }
    }

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.)


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()
}

3

Na podstawie powyższych odpowiedzi w szybki .

tableView.tableFooterView = UIView(frame: .zero)

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()

}

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

Wywołaj ten kod w viewDidLoadmetodzie.


1

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

tblOutletName.tableFooterView = UIView ()


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.


-2

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

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

-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.


Nie spowoduje to wyświetlenia ostatniej pozycji w tablicy.
elarcoiris
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.