Wie eine Suchfunktion zu implementieren, die bar, der bleibt immer auf der Oberseite mit UISearchDisplayController im iPhone SDK 3.0

Dem iPhone SDK 3.0 mit diesem praktischen neuen Klasse "UISearchDisplayController", das macht es einfach zu erstellen Sie eine search bar, die Bearbeitung der Benutzer-Eingabe und Anzeige der Suchergebnisse.

Ich benutze es für meine neue app, aber es gibt eine Sache, die ich ändern möchte:

Standardmäßig ist die Suchleiste sollte sich an die Spitze der UITableView, dass zeigt die Suchergebnisse an. Also, wenn Sie nach unten scrollen der Liste, die Suchleiste verschwindet.

Was ich erreichen möchte ist, dass die such-Leiste immer oben und beim scrollen der TableView, die Suchleiste sollte bleiben, wo es ist. (Grund dafür: in meiner app gibt es manchmal eine Menge von Suchergebnissen, also manchmal hat der Benutzer einen Bildlauf nach unten eine Weile, und als er merkt, dass er zu ändern hat, seine such-string, den ich nicht wollen, ihn zu zwingen, Blättern Sie den ganzen Weg zurück)

Was ich schon habe ist das hinzufügen der search-Leiste, um die Ansicht des UINavigationController ist der "übergeordneten Sicht" meine Tabelle ansehen, anstatt Sie in die Tabellenansicht direkt:

MyAppDelegate *delegate = [[UIApplication sharedApplication] delegate];

searchBar = [[UISearchBar alloc] init];
searchBar.delegate = self;

[searchBar sizeToFit];
CGFloat searchBarHeight = [searchBar frame].size.height;
CGRect mainViewBounds = delegate.navController.view.bounds;
[searchBar setFrame:CGRectMake(CGRectGetMinX(mainViewBounds),
                             CGRectGetMinY(mainViewBounds) + 20,
                             CGRectGetWidth(mainViewBounds),
                             searchBarHeight)];
searchBar.autoresizingMask = UIViewAutoresizingFlexibleWidth;

[delegate.navController.view addSubview: searchBar];

searchDisplayController = [[UISearchDisplayController alloc] initWithSearchBar: searchBar contentsController: self];
searchDisplayController.searchResultsDataSource = self;
searchDisplayController.searchResultsDelegate = self;

... aber hier mein problem ist, dass die Tabelle-Ansicht bleibt hinter der Suchleiste, und es ist immer der erste TableViewCell der such-Ergebnisse, dass sich hinter my search bar.

Gibt es eine Möglichkeit, um die Größe der UITableView meiner UITableViewController dauerhaft, so dass es beginnt direkt unter der Suchleiste?

Und es gibt ein anderes problem: jedes mal, wenn ich berühren Sie die Suchleiste, die UISearchDisplayController automatisch blendet die Navigationsleiste und die Größe der UITableView (es dehnt sich nach oben), so dass ich denke, dass an dieser Stelle die UISearchDisplayController haben ein großes problem mit meiner benutzerdefinierten Größe TableView...

Vielen Dank für jede Hilfe!!!!

InformationsquelleAutor xoconoxtle | 2009-07-31
Schreibe einen Kommentar