4 Stimmen

UITableView scrollt nicht mit UISearchBar

Was ich erreichen möchte, ist eine UISearchBar, die nach oben bewegt und deckt die UINavBar, und enthält eine Schaltfläche zum Abbrechen auf der rechten Seite davon. Alles geht gut, bis ich die folgende Codezeile verwenden:

searchDC = [[[UISearchDisplayController alloc] initWithSearchBar:searchBar contentsController:self] autorelease];

Was am Ende passiert ist die UITableView einfach nicht blättern, aber alles andere funktioniert wie erwartet. Wenn ich diese Zeile entfernen, ist meine Navigationsleiste sichtbar, und die Suchleiste sitzt nur unter ihm, auch ohne eine Schaltfläche Abbrechen.

Irgendwelche Ideen?

Der Code zum Zeichnen der Suchleiste lautet:

self.navigationItem.title = @"Search";
searchBar = [[[UISearchBar alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.view.bounds.size.width, 44.0f)] autorelease];
searchBar.autocorrectionType = UITextAutocorrectionTypeNo;
searchBar.autocapitalizationType = UITextAutocapitalizationTypeNone;
searchBar.keyboardType = UIKeyboardTypeAlphabet;
searchBar.delegate = self;
[searchBar becomeFirstResponder];

tableView.tableHeaderView = searchBar;
tableView.tableHeaderView.frame = CGRectMake(0.f, 0.f, 480.f, 44.f);
searchDC = [[[UISearchDisplayController alloc] initWithSearchBar:searchBar contentsController:self] autorelease];
searchDC.searchResultsDataSource = self;
searchDC.searchResultsDelegate = self;
searchDC.searchResultsTableView.separatorStyle = UITableViewCellSeparatorStyleNone;
searchDC.searchResultsTableView.scrollEnabled = YES;

overlayView.frame = CGRectMake(0, 50, 320, 480);
[self.view addSubview:overlayView];
[self.view bringSubviewToFront:overlayView];

1voto

Robert Redmond Punkte 1512

Die Informationen reichen nicht aus, um diese Frage zu beantworten. Sie müssen den UIViewController- oder UINavigation-Controller-Code (sowohl den .h- als auch den .m-Code) zeigen, wo Sie den UISearchDisplayController einrichten.

EDIT:

Sie setzen das völlig falsch um. Apple hat ein großartiges Beispiel dafür, wie man dies implementiert http://developer.apple.com/iphone/library/samplecode/TableSearch/Introduction/Intro.html

1voto

Ram Gandhi Punkte 707

Aus der Dokumentation von Apple,

Delegate for the search display controller (delegate), which responds to events such the starting or ending of a search, and the showing or hiding of the search interface.

Setzen Sie die delegate zu Ihrem UITableViewController

 searchDC.delegate = self;

Fügen Sie auch die searchDC's hinzu searchBar zum headerView des tableViews

 [self.tableView setTableHeaderView:searchDC.searchBar];

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