Добавить подпредставление в таблицу, которая не прокручивается - PullRequest
1 голос
/ 11 сентября 2011

Я использую UITableViewController и хочу добавить панель поиска.

Мои варианты [self.tableview addSubview:searchBar] или self.tableview.tableHeaderView = searchBar Оба варианта прокручивают панель поиска вдоль остальной части табличного представления, что я понимаю. Но есть ли способ заблокировать элементы вместо использования UIViewController или изменения источника кадра при прокрутке? Я думаю о способе подняться над текущей иерархией представления и добавить к нему подпредставление.

Я попробовал противоположный подход, чтобы добавить представление к суперпредставлению и вывести его на передний план

[[self.tableView superview] addSubview:searchBar]; [[self.tableView superview] bringSubviewToFront:searchBar]; } * +1010 *

но это не сработало.

1 Ответ

4 голосов
/ 11 сентября 2011

UITableViewControllers - это UIViewControllers, которые имеют свойство основного вида UITableView. Таким образом, UITableView делает весь экран.

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

Для этого просто:

  • Измените класс вашего контроллера представления и вместо этого отметьте, что он соответствует протоколам, связанным с табличным представлением: измените @interface UITableViewController на @interface UIViewController <UITableViewDelegate, UITableViewDataSource>
  • Добавьте свойство @property(nonatomic, retain) IBOutlet UITableView* tableView в заголовочный файл и соответствующий оператор @synthesize tableView; в реализации. Не забудьте установить это свойство обратно nil (self.tableView = nil) в вашем dealloc для хорошего управления памятью
  • Свяжите свой экземпляр UITableView в InterfaceBuilder с этим вновь созданным IBOutlet.

Таким образом, у вас все еще есть UITableView, но это не будет основной вид, который занимает весь ваш экран; вместо этого вы можете расположить tableView так, как вам нужно, и сделать так, чтобы он занимал только часть экрана, и разместить над ним панель UISearchBar.

Другой подход заключается в использовании UISearchDisplayController для управления UISearchBar.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...