Ich habe eine dynamische benutzerdefinierte UITableViewCell
, die das automatische Layout nutzt.Bevorzugter Ansatz zum Ändern des UITableViewCell-Inhalts basierend auf der Zellenbreite
Ich verändere den Textinhalt eines Etiketts, abhängig von der Breite der Zelle.
reloadData
wird während des Orientierungsübergangs aufgerufen, um die Beschriftung zu aktualisieren.
Während dies passiert, stelle ich mir vor, es gibt eine bessere Möglichkeit, dies zu behandeln, die nicht den Overhead des Neuladens der TableView beinhaltet.
(Keiner der Einschränkungen geändert werden muß. Das Etikett ist an der gleichen Stelle, sondern zeigt einfach unterschiedliche Inhalte, wenn es für sie mehr Platz ist.)
Soll ich Unterklasse
UILabel
und den Text ändern in-didMoveToSuperview
?Ist es möglich, den Text in
-layoutSubViews
zu ändern? (Würde das nicht einen anderen Layout-Durchlauf verursachen, weil der Text geändert wurde?)
Danke für alle Antworten!
"das bringt nicht den Overhead des Neuladens der tableView mit" Ich denke, die erste Sache zu tun ist zu überdenken, warum Sie glauben, dass das Neuladen der Tabellenansicht "Overhead" ist. Es ist ziemlich effizient, da nur die sichtbaren Daten der Tabellenzelle tatsächlich frisch abgerufen werden - und Ihr Datenmodell sollte vollständig effizient sein oder Sie tun es falsch. – matt
Es scheint nur wie Overkill, Matt. Das automatische Layout wird aufgrund der automatischen Rotation bereits ausgeführt, und ich vermute, dass es direkt innerhalb des bereits vorhandenen Layout-Passes gehandhabt werden kann. Ich weiß einfach nicht genug über das automatische Layout, um zu wissen, wie die Zelle oder das Label damit umgehen soll. –
Aber das Problem, das ich nicht erwähne, ist das subtile Flackern des Nachladens, das Sie ohne das Nachladen nicht sehen würden. Es würde schöner aussehen, wenn ich den Tisch nicht neu laden müsste, und er hat sich einfach automatisch gedreht und neu gezeichnet (mit anderem Inhalt). Möglich? –