3 Stimmen

Tabellenansicht ist nicht länger eine searchResultsTableView, wenn sie von einer Detailansicht zurückkehrt

Ich verwende einen UISearchDisplayController auf der Grundlage dieses Tutorials: http://developer.apple.com/library/ios/#samplecode/TableSearch/Introduction/Intro.html

Ich habe eine Tabelle Ansicht in Navigation Controller mit dieser Suche Controller. Und wie üblich, können Sie suchen, klicken Sie auf das Suchergebnis und gehen Sie zur Detailansicht.

Ich verwende einen Code wie den folgenden, um zu erkennen, ob die aktuelle Tabellenansicht searchResultsTableView ist.

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    if(tableView == self.searchDisplayController.searchResultsTableView)
        return 1;
    else
        return [self.arrCharacters count];
}

Mein Problem ist, wenn der Benutzer von der Detailansicht zur Suchergebnis-Tabellenansicht zurückkehrt, wird diese tableView zur normalen Tabellenansicht und nicht mehr zur searchResultsTableView. Aber die Tabelle ist immer noch gefiltert und zeigt nur die Suchergebnisse. Nur der tableView wird nicht mehr als searchResultsTableView erkannt. Daher gehen alle meine Indexberechnungen schief und die Anwendung stürzt ab.

Für jede Hilfe sind wir sehr dankbar.

Vielen Dank!

0voto

REALFREE Punkte 4268

Eine alternative Möglichkeit, diese Situation zu lösen, ist ein Flag zu setzen, ob Ihre Tabelle searchResultTableView oder nur normale tableView ist. Zum Beispiel, wenn der Benutzer hat die Suche in jeder Chance, setzen Sie Ihre Flagge als wahr, und halten Sie diesen Wert, es sei denn, Benutzer klicken Sie auf Abbrechen oder eine andere Möglichkeit, um die Suche zu beenden. Da Sie searchDisplayController verwenden, delegieren Sie die Methode

-(void)searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller

wird am Ende der Suche aufgerufen, so dass Sie den Flag-Wert ändern können, um eine normale Tabelle anzuzeigen. Basierend auf diesem Flag-Wert, können Sie if-Anweisung in tableView delegieren Methoden setzen, um die Tabelle in einer Weise, die Sie wollen. Allerdings, wenn ich versuche, die gleiche Situation wie Ihr Fall zu überprüfen (Suche und klicken Sie auf eine der Tabellenzellen und gehen Sie zurück zu vorherigen Tabelle) in meiner app, tableView noch als searchResultTableView halten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X