Extra lege cellen verwijderen in TableViewController, iOS – Swift

Hallo, ik heb een TableViewControllermet twee statische cellen, maar als deze wordt weergegeven, worden de twee statische cellen weergegeven en vervolgens alle andere lege cellen voor de tabelweergave. Ik wil die cellen echter niet weergeven omdat ze nutteloos zijn. Hoe verberg ik de rest van de cellen behalve de twee statische cellen?


Antwoord 1, autoriteit 100%

voeg in uw functie viewDidLoad()deze regel code toe:

tableView.tableFooterView = UIView()

Antwoord 2, autoriteit 5%

Selecteer uw UITableView, ga naar de attributeninspecteur en verander de stijl in Grouped.

voer hier de afbeeldingsbeschrijving in


Antwoord 3, autoriteit 2%

Om hieraan toe te voegen, de reden waarom het instellen van tableFooterViewop UIView()de rijen verwijdert, is omdat u een lege UIView()bezwaar maken tegen het pand. Volgens de Apple-documentatie:

var tableFooterView: UIView?

Als u daarom een ​​lege UIView() instelt, wordt er niets weergegeven onder uw gegevens voor deze eigenschap.

Je kunt de lege rijen terugzetten door tableFooterViewterug te zetten naar de standaardwaarde, zoals:

tableView.tableFooterView = nil

Antwoord 4, autoriteit 2%

Het instellen van de tableFooterViewzou extra celachtige weergaven moeten verwijderen.

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

Antwoord 5

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

Noem deze code met de methode viewDidLoad.


Antwoord 6

U kunt dit ook in Storyboard bereiken door eenvoudig een weergave naar het voettekstgebied van de tabelweergave te slepen en vervolgens de hoogte en achtergrondkleur in te stellen op 1 en respectievelijk wissen met behulp van de eigenschappencontrole.

(Hiermee wordt ervan uitgegaan dat u om de een of andere reden de instelling Groepsstijl niet kunt of wilt gebruiken. Doe dat anders gewoon.)


Antwoord 7

Swift 4
Voortbordurend op het antwoord van HorseT, sleept u eerst van uw Table View in uw storyboard naar uw View Controller-klasse en maakt u een outlet met de naam tableView.

@IBOutlet weak var tableView: UITableView!

Je viewDidLoad in je View Controller zou er dan ongeveer zo uit moeten zien:

   override func viewDidLoad() {
    super.viewDidLoad()
    tableView.dataSource = self
    tableView.delegate = self
    tableView.tableFooterView = UIView()
}

Antwoord 8

Gebaseerd op bovenstaande antwoorden in swift.

tableView.tableFooterView = UIView(frame: .zero)

Antwoord 9

als u rijen voor alle UITableViewsin uw app wilt verwijderen, voegt u gewoon een extensie toe zoals deze:

Swift 5.0

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

Antwoord 10

Gewoon toevoegen:

tableView.tableFooterView = UIView()

Uitleg:

Dit is volledig geldig en werkt perfect in swift 3.By Aangezien u een leeg UIView()-object instelt op de eigenschap, verwijdert TableFooterView naar UIView() de rijen.


Antwoord 11

Voeg onderstaande code toe aan uw “override func viewDidLoad()” of “override func viewWillAppear(_ animation: Bool)”functies.

tblOutletName.tableFooterView = UIView()


Antwoord 12

Abobe antwoord is juist. We kunnen dit bereiken door toe te voegen

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

Antwoord 13

Ik heb tableview.tableFooterView = UIView() geprobeerd en het werkte niet voor mij. Ik gebruik een aangepaste TableViewViewCell, misschien is dat de reden.

Ik heb wel een hack gevonden. In mijn functie numberOfRowsInSection

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

En dat zorgt ervoor dat mijn extra lege aangepaste UITableViewCell niet meer wordt weergegeven. Natuurlijk is het de extra blanco. Ik zal het nog wat testen door meer cellen toe te voegen. Ter referentie, ik gebruik Swift 3, Firebase, een aangepaste celklasse, in de cellForRowAt-functie.

Other episodes