Добавление UISearchBar в качестве tableHeaderView в xib не работает

#iphone #objective-c #uitableview #uisearchbar

#iPhone #objective-c #uitableview #uisearchbar

Вопрос:

Я добавил UISearchBar в качестве tableHeaderView для UITableView в xib, просто перейдя UISearchBar на UITableView . Он работает нормально, когда в таблице более 6 строк. Но когда строк меньше 6, он UITableView не прокручивается.

В то же время, если я добавлю UISearchBar as tableHeaderView для UITableView программно в .m-файл, используя следующую инструкцию, ВСЕ РАБОТАЕТ НОРМАЛЬНО.

 tableViewTemp.tableHeaderView = searchBarFriends; 
  

Мне кажется очень странным,
В чем может быть проблема?

Пожалуйста, совет, спасибо.

Ответ №1:

Вот небольшой трюк, который я сделал 😉 Не делайте панель поиска подвидом вашего UITableView. Просто добавьте их экземпляры в свой файл nib и подключите их как IBOutlets в вашем UITableViewController. Затем то, что вы собираетесь сделать, это установить панель поиска в качестве представления заголовка для вашей таблицы, таким образом, вам не нужно беспокоиться о перекрытии фреймов и вмешательстве в события касания. Вот как вы это делаете:

Создайте свойство в заголовочном файле TableView

 @property ( nonatomic, retain ) IBOutlet UISearchBar *searchBar;
  

Установите вид заголовка для вашей таблицы:

 - (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
    return self.searchBar;  // The property you wired up in IB
}
  

Установите высоту для вашего заголовка или (UISearchBar)

 - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
    return 44; // The height of the search bar
}
  

Это все, что вам нужно. Теперь это может быть не лучшим решением, если у вас есть сгруппированный tableview или таблица с несколькими разделами, но это чистое решение для простой таблицы. В противном случае вам придется настроить рамку панели поиска И tableview в коде, потому что они перекрываются, и поэтому у вас возникают проблемы с касанием. Надеюсь, это поможет!

Комментарии:

1. Я использовал это в своих приложениях, должно работать как шарм. Отметьте это как принятое, если это так 😉

Ответ №2:

если вы добавите панель поиска, как показано ниже, иерархия будет работать

введите описание изображения здесь

Комментарии:

1. Я добавил так только приятеля, но это делало UITableView недоступным для прокрутки, когда записей меньше 6.

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

Ответ №3:

У меня была почти такая же проблема (для меня она вообще не прокручивалась с любым количеством строк, но это произошло бы, как только я удалил панель поиска). Исправлено добавление этого в viewDidLoad :

 self.tableView.alwaysBounceVertical = YES;
  

Комментарии:

1. Спасибо, pt2ph8, я тоже попробую это.