UISearchBar в UITableViewController? - PullRequest
       17

UISearchBar в UITableViewController?

5 голосов
/ 14 ноября 2010

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

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

Есть хитрость?

С уважением

Ответы [ 5 ]

19 голосов
/ 10 декабря 2010

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

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;  

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

7 голосов
/ 25 мая 2013

Я могу заставить его работать, используя два метода протокола UITableViewDelegate: –tableView: viewForHeaderInSection: и –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;
}

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

4 голосов
/ 19 июля 2011

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

- (void)viewDidLoad 
{
    [super viewDidLoad];
    tableView.tableHeaderView = searchBar;
}
1 голос
/ 26 июля 2011

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

0 голосов
/ 01 мая 2013

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

...