Sukima
Sukima

Reputation: 10084

UISearchBar is covered up in a tableViewHeader

I have placed a UISearchBar in my UITableView.tableHeaderView. However it covers the searchBar by placing the viewable top to the first section header. I can only see the searchBar when I drag the tableView down. It is half covered and then can not be selected because releasing the tableView scrolling will rubber band it back out of view. Please help.

The following is placed in my UITableViewController viewDidLoad method:

UISearchBar *theSearchBar = [[UISearchBar alloc] init];
theSearchBar.delegate = self;
self.searchBar = theSearchBar;
[theSearchBar release];

self.tableView.tableHeaderView = self.searchBar;

The result is the following screenshots: http://imagebin.ca/view/6qNiwHR.html

Upvotes: 1

Views: 3025

Answers (2)

Sukima
Sukima

Reputation: 10084

It turns out that it was a sizing issue. I found a tutorial that places the following code in the set up:

[theSearchBar sizeToFit];

which make everything look perfect.

Since UISearchDisplayController uses an already established UISearchBar it doesn't eliminate the problem.

Upvotes: 5

Julien
Julien

Reputation: 9442

I think the tableHeaderView is not the best place to put your search bar. I usually use a UISearchDisplayController:

searchController = [[UISearchDisplayController alloc]
                     initWithSearchBar:theSearchBar contentsController:self];
searchController.delegate = self;
searchController.searchResultsDataSource = self;
searchController.searchResultsDelegate = self;

It's pretty straight-forward and give some functions for searching (you have to implement them in the delegate/datasource, in this case your controller).

I usually do it from a nib but i think you just have to assign it to your viewcontroller :

self.searchDisplayController=searchController;

And if it doesn't show the view, you should add the view to the tableView directly.

You can look at the reference, or ask if you have some problems.

Upvotes: 0

Related Questions