2010-11-14 2 views
5

Я хочу добавить SearchBar в мой TableView. Я просто перетащил UISearchBar в заголовок UITableView в IB, и он прокрутил мой UITableView.UISearchBar в UITableViewController?

я изменил использовать UITableViewController сейчас, и когда я перетащить UISearchBar в заголовке из UITableView, который обеспечивается с UITableViewController, он не появляется вообще.

Есть ли уловка?

Сердечных приветы

ответ

19

Вы можете сделать это программно

UISearchBar *tempSearchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, self.tableView.frame.size.width, 0)]; 
self.searchBar = tempSearchBar; 
[tempSearchBar release]; 
self.searchBar.delegate = self; 
[self.searchBar sizeToFit]; 
self.tableView.tableHeaderView = self.searchBar; 

Надеется, что это помогает.

+0

Отличное решение. Чтобы добавить поисковую панель, я должен был использовать UIViewController раньше. Теперь с нашим решением я могу использовать UITableViewController. –

4

Всякий раз, когда я определяю строку поиска в nib, я не собираюсь добавлять ее в заголовок таблицы цели специально. Вместо этого я установил его в функции viewDidLoad. Решение Retterdesdialogs также работает, поэтому не уверен, почему у него больше нет голосов.

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    tableView.tableHeaderView = searchBar; 
} 
1

Это также зависит от того, как инициализировать контроллер Tableview, если вы Alloc и инициализации с помощью initWithNib: Bundle метод он должен еще показать. Но с контроллером tableview я считаю, что метод реализации по умолчанию - initWithStyle. Если вы alloc'd и init с initWithStyle, файл nib никогда не будет загружаться.

0

Я просто попробовал, и это сработало для меня, не должно быть хитрости. Если вы хотите разместить дистиллированную версию своего проекта, я могу вам помочь.

7

Я получаю его для работы с использованием двух методов протокола UITableViewDelegate -tableView: viewForHeaderInSection: and -tableView: heightForHeaderInSection: как указано ниже.

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{ 
    if (section == 0) { 
     UISearchBar *tempSearchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, self.tableView.frame.size.width, 0)]; 
     [tempSearchBar sizeToFit]; 
     return tempSearchBar; 
    } 
    return [UIView new]; 
} 

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{ 
    if (section == 0) { 
     return 40.0f; 
    } 
    return 0.1f; 
} 

Надеюсь, это поможет.

+1

Это действительно помогло. Спасибо. –

+0

спасибо .... Круто :) –