2010-04-21 5 views
12

Ich habe einen Standard UITableView + UISearchDisplayController + UITableViewIndex-Setup. Alles funktioniert wie ein Champion.UITableViewIndex wächst zu falschen Grenzen unerwartet

Ausgenommen, unter sehr spezifischen Bedingungen wächst der Index zu lang, um auf dem Bildschirm angezeigt zu werden. Nach dem Beenden einer Suche und dem erneuten Anzeigen der ungefilterten indizierten Tabelle wird der Index manchmal zu lang.

Genauer gesagt passiert dies nicht, wenn ich suche und dann abbrechen. Es passiert nur, wenn ich suche, dann einen View-Controller aus der Suchtabelle drehe, dann den View-Controller wieder in die Standsuch-Tabelle platziere, dann die Suche abbringe, dann suche und dann diese letzte Suche abbrechen. Nach dem Ende der letzten Suche ist der Index zu lang.

Im Hochformat meldet die Tabellenansicht eine Höhe von 416 und der Index eine Höhe von 404 unter normalen Bedingungen. Wenn ich logge von searchDisplayControllerDidEndSearch, wenn der Index falsch sortiert ist, meldet es eine Höhe von 620.

Ich habe alles aus setLayout auf der Tabelle und dem Index versucht, den Rahmen manuell zu ändern. Nichts funktioniert (die manuelle Neugröße bewirkt, dass die richtige Höhe protokolliert wird, ändert jedoch nicht die Anzeige auf dem Bildschirm).

Ich war über die Aufhebungs Animation wurde zu stören, Neudimensionierung nach einer Verzögerung im Fall versuchen, aber dann wurde mir klar, was für eine absurde Situation, ich bin in und dachte Hilfe weise ...

+0

Wie erstellen Sie Ihren Index? Ist es in ViewWillAppear gebaut? – gnasher

+0

Wenn Sie eine Art Hintergrundaufgabe (synchron) ausführen, kann dies unter bestimmten Umständen das richtige Verhalten der Benutzeroberfläche blockieren. – elslooo

+0

Möglicherweise möchten Sie überprüfen und sehen, wenn Sie automatische Größenanpassung auf Ihre Ansicht eingestellt haben. – fjlksahfob

Antwort

1

Wenn sein könnte suchen Wenn Sie immer noch Probleme haben, können Sie versuchen, einen symbolischen Haltepunkt auf - [UITableView setFrame:] und Trace festzulegen, woher der Aufruf des festgelegten Rahmens kommt. HTH

+0

(oder möglicherweise - [UITableView setBounds:]) – nielsbot

0

Mein Szenario war ein bisschen anders als das, das gepostet wurde, aber ich fand eine Lösung, die in meinem Fall funktioniert, also hoffentlich auch in dem hier geposteten.

Ich habe eine UITableView, die einen HoledResultsController verwendet und lädt mehr Elemente von einem Server, wenn Sie das Ende der TableView erreichen. Bei der Suche wird der abgerufeneResultsController gefiltert und lädt weitere Einträge vom Server, wenn nicht genug angezeigt werden kann.

Wenn die Verbindung ihre Ergebnisse zurückgibt (nach dem Drücken von "Suchen"), lade ich die TableViews neu (das Original und die searchResultsTableView). Jetzt, wenn Sie die Suche abbrechen und alles wieder normal ist, erlebe ich das Problem von der Frage. Der UITableViewIndex wird auf seine unerwarteten Grenzen erweitert.

Da ich auch festgestellt habe, dass die UITableView Größe viel größer als erwartet war, spielte ich eine Ahnung und es funktionierte für mich. In Ihrer UITableView-Unterklasse (das ist ARC/6.1):

Sie müssen dies möglicherweise zwicken.

Verwandte Themen