Hallo, ik heb een TableViewController
met 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.
Antwoord 3, autoriteit 2%
Om hieraan toe te voegen, de reden waarom het instellen van tableFooterView
op 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 tableFooterView
terug te zetten naar de standaardwaarde, zoals:
tableView.tableFooterView = nil
Antwoord 4, autoriteit 2%
Het instellen van de tableFooterView
zou 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 UITableViews
in 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.