2010-03-31 16 views
6

Ich habe View-Controller, in die Ansicht habe ich eine Tabellenansicht und eine Suchleiste in die Kopfzeile der Tabelle ... die Suchleiste wird nicht angezeigt, nur die leere Tabellenansicht.UISearchBar Nicht erscheinen

Muss ich etwas Zusätzliches tun? Ich bin ziemlich sicher, dass seine zu View mit dem view Ausgang des UIViewController gesetzt zu tun ...

Dank

Antwort

-1

behoben UISearchBar mit Controller.

8

Für alle anderen, die möglicherweise auf diese Frage landen, hatte ich eine sehr ähnliche Situation, in der ein UITableViewController mit einer UISearchBar hinzugefügt wurde nicht angezeigt. Wenn Sie sich in dieser Situation finden, überprüfen Sie, die Sie anrufen tatsächlich:

initWithNibName:@"MyNibName" bundle:nil 

Ihre View-Controller init anstelle der gemeinsamen Tabellenansicht init von:

initWithStyle:UITableViewStylePlain 

ich dummerweise wurde Hinzufügen der Suche bar an die Nib, und dann mit der style-init (die die Nib vollständig überspringt und lädt die Tabelle von Grund auf neu)

+0

Dies trug dazu bei, ich war gleich Null zu initWithNibName vorbei, die in der Regel funktioniert, aber für UITableViewControllers scheint es nicht. –

0

Wenn Sie Ihren View-Controller als Teil des Tab-Controllers, neben "Class" -Eigenschaft in IB legte die Eigenschaft "NIB-Name" fest. Ich brauche mehrere Stunden, um es herauszufinden.

2

Versuchen Sie, die tableHeaderView Ihres tableView zu Ihrer searchBar zu setzen.

Wenn Sie IB verwenden, achten Sie darauf, die Ausgänge so anzuschließen, dass sie referenziert werden.

2

Versuchen Sie dieses, ich es für mich gearbeitet:

- (void)viewDidAppear:(BOOL)animated { 
    [super viewDidAppear:animated]; 
    self.tableView.tableHeaderView = _searchBar; 
    [_searchBar becomeFirstResponder]; 
} 

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar { 
    [_searchBar resignFirstResponder]; 
    self.tableView.tableHeaderView = _searchBar; 
} 

-(void) scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    searchBar.frame = CGRectMake(0,MAX(0,scrollView.contentOffset.y),320,44); 
}