UISearchBar в верхней части UITableView, который может скрываться, но оставаться рядом с UINavigationBar

Я хотел бы иметь UISearchBar в верхней части моего UITableView, который скрывает при прокрутке вниз: ответ прост, мне просто нужно добавить его в заголовок таблицы таблицы следующим образом:

UISearchBar *search = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, 320, 45)];
self.tableView.tableHeaderView = search;
[search release];

Но проблема заключается в том, что при прокрутке UISearchBar подходит к верхней части UITableView, а не к вершине UINavigationBar. Чтобы быть более ясным, я сделал экран в Mail (не хорошо) и Game Center (хорошо).

enter image description here

Я хочу того же, что и в Game Center. Вы хоть представляете, как они это делают?

Ответы

Ответ 1

Вам нужно будет скрыть панель поиска самостоятельно при прокрутке таблицы. Поэтому не ставьте его как заголовок UITableView. Вы можете скрыть его, установив его высоту в ноль. Таким образом, если ваше табличное представление настроено на автоматизацию, оно будет расширяться.

Я бы экспериментировал с наличием UITableView и UISearchBar как одноранговых узлов в другом представлении. Изображение GameCenter не имеет строки поиска в качестве заголовка таблицы, а имеет их как отдельные поднастройки.

Вы также можете посмотреть на UISearchDisplayController, но я думаю, что он не совсем имеет поведение, которое вы хотите.

Изменить: Этот вопрос - это в основном ваш вопрос, и в ответах есть код.

Ответ 2

Заголовок таблицы будет перемещаться при прокрутке вниз. Это свойство tableview. Если вы хотите разместить searchBar с панелью навигации. Почему вы не помещаете панель поиска прямо под панель навигации. Используйте панель поиска и отдельную таблицу.

Ответ 3

Правая сторона UISearchBar находится на другом UIView, она не является частью UITableView. Таким образом, вы можете добавить дочерний вид, чтобы поместить UISearchBar, а другое дочернее представление - для UITableView.