Verstecken Sie eine UitableView, indem Sie die Zeilenhöhe auf 0 festlegen?
-
25-10-2019 - |
Frage
Ich habe gerade den Code geerbt, der die Reihen einen UitableView mit dem Delegierten versteckt/zeigt heightForRowAtIndexPath
Methode und Rückkehrhöhe 0 für "versteckte Zeilen".
Der Code funktioniert, aber ich habe besorgt, dass es mit unvorhergesehenen Komplikationen behaftet sein könnte. Kann jemand entweder meine Bedenken lindern oder mir gute Gründe geben, warum dies Probleme verursachen kann (ich konnte keine Probleme bei ersten Tests finden).
Die Tabelle ist insgesamt ziemlich klein <10 Zeilen und müsste auch ohne diese versteckte Zeilenlösung benutzerdefinierte Reihenhöhen erfordern.
Lösung
Es wäre sauberer, die Zeilen zwischen zwei hinzuzufügen und zu entfernen beginUpdates
und endUpdates
Anrufe, aber ich verstehe nicht, warum diese Methode mit 0-Höhe nicht funktionieren sollte.
Wenn es keine UI-Artifakte gibt, heißt das (zB der Löschen Taste, die über die nächste Zelle überflutet wird).
Andere Tipps
Ich mache das Gleiche in dem Code, an dem ich gerade gearbeitet habe. Ich bin nicht zufrieden mit unterschiedlichem Verhalten für verschiedene Tabellenansichteinstellungen.
Die Alternative in meinem Fall ist komplexer (ein Modell, das sich an das anpasst, was sichtbar ist oder nicht).
Im Moment habe ich einen // Hack -Kommentar dazu gestellt und ein paar Besonderheiten dokumentiert.
Das habe ich gefunden (iOS 5.0 getestet):
- Set tableView.rowHeight = 1; Zero gibt eine Zelle mit Nullhöhe (wie von TableView: TableView HigheForrowatIndexPath zurückgegeben :) Eine Standardhöhe.
- Sie müssen einen Zellabscheider haben. Wenn keine ausgewählt ist, wird eine Standardhöhe Nullhöhenzeilen zugewiesen. Die Höhe von 1 ist im Trennzeichen enthalten.
Wenn Ihr Code anders funktioniert, wäre es interessant zu wissen, wie er eingerichtet ist.
Ich verwende diese Methode, um versteckte Zellhöhen auf 0 zu setzen. Sie funktioniert gut und bedeutet auch, dass ich die Einbeziehung neuer Zellen durch Erweiterung der Zellhöhe (z. B. Hinzufügen einer Datumspickerzelle wie die Kalender -App) animieren kann.
Ein paar Dinge, auf die ich in iOS 7.1 achten musste, sind, dass sehr zerquetter Text auch dann immer noch angezeigt wird, wenn eine Zellhöhe = 0 ist, also musste ich in diesem Fall den Zelltext entfernen. Außerdem habe ich die Größe des Separatorinsets der Zelle verändert, da dies ebenfalls erscheint.