Ich habe meine Zeilenhöhe UITableView
in Interface Builder auf 54.0 gesetzt. Ich habe eine UISearchDisplayController
auf dieser Ansicht. Wenn der Benutzer auf die Suchleiste klickt, wird die Größe der Tabelle korrekt angepasst. Wenn sie jedoch anfangen zu tippen (und tatsächlich die Suche durchführt), nimmt die Zeilenhöhe ab. Es bleibt falsch, bis die Suche antippt Abbrechen.UISearchDisplayController Zeilenhöhe ändern
Ich konnte keine Dokumentation zu diesem Verhalten auf der Website von Apple finden.
Ich habe versucht, die Zeilenhöhe in UISearchDisplayDelegate
Delegate Anrufe einzustellen. Dies könnte der richtige Ansatz sein, aber ich kenne die Details nicht und konnte es nicht zum Laufen bringen.
Ich habe auch versucht, - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
zu implementieren. Das hat funktioniert, aber ich habe Tausende von Einträgen in dieser Liste und kann die Leistung nicht schlagen.
Was ist der richtige Weg, um das zu beheben?
Ich würde jedem empfehlen, sich Steven's Antwort unten anzuschauen. Er ist die einzige Antwort, die a) dem 'UITableViewDataSource'-Protokoll folgt, das' UISearchTableView' wie jede andere Tabelle behandelt und b) mehr als eine einzelne Höhe für Zeilen unterstützt. B ist eher wichtig, wenn Sie über die Standardfunktionalität verfügen, um eine benutzerdefinierte Zelle "Keine Suchergebnisse" anzuzeigen, die normalerweise so dimensioniert ist, dass sie den gesamten TableView-Frame aufnimmt. – memmons
Ich bezweifle, dass das stimmt. Ich fand die Implementierung von 'heightForRowAtIndexPath' für mich in diesem Fall, es war nur langsam für meine Tabelle (die Zehntausende von Zeilen hatte). Stellen Sie sicher, dass Sie nur für bestimmte 'tableView'-Parameter keine variable Höhe zurückgeben, und Sie sollten in Ordnung sein. –
'heightForRowAtIndexPath' sollte niemals einen signifikanten Einfluss auf die 'tableView'-Leistung haben. Unabhängig davon, ob Sie 10 Zeilen oder 10.000 Zeilen haben, behandelt das TableView nur die aktuell sichtbaren Zeilen. Wenn Sie also nicht viel Zeit aufwenden, um festzustellen, wie hoch die Zeilenhöhe sein soll, sollte Ihr TableView beim Scrollen eine 60fps-Animation beibehalten können. – memmons