Как остановить прокрутку UISearchBar с помощью UITableview в iOS 8

Я использую UISearchBar , UISearchController и UISearchResultsController и не могу понять, как остановить прокрутку UISearchBar с помощью UITableview в iOS 8

Не нашел ответа, который работает.


person Adelmaer    schedule 11.12.2014    source источник


Ответы (2)


См. отличный ответ Бенджамина здесь: https://stackoverflow.com/a/27129481/1505096

Вкратце: используйте UIViewController со встроенным UITableView, не UITableViewController. Первый дает вам возможность делать все, что вы хотите, с табличным представлением, включая часто запрашиваемое поведение, которое вы ищете, в то время как во втором представление само по себе представляет собой табличное представление, так что вы гораздо более ограничены в том, что вы можете делать за пределами обычной парадигмы дизайна.

Игра с UIScrollViewDelegate и настройка фреймов в нем — как я видел во многих ответах SO — это хак, и вам не нужно прибегать к этой хитрости.

person T'Pol    schedule 18.12.2014

  1. Используйте UIViewController вместо UITableViewController
  2. Добавьте подвид чуть ниже строки состояния, размером с UISearchBar.
  3. Добавьте tableView прямо под подвидом
  4. Подключите свои торговые точки, источник данных и делегируйте
  5. Используйте AutoLayout, чтобы сохранить представления в нужном положении
  6. В методе viewDidLoad настройте свой UISearchController как обычно, но вместо того, чтобы устанавливать searchController searchBar в качестве заголовка tableView, добавьте его в качестве подвида представления, которое вы создали в StoryBoard.
  7. Вот и все... Просто публикую на случай, если кому-то еще интересно.
person user2669841    schedule 24.01.2015
comment
нет ли более простого способа добиться этого? это выглядит довольно сложным в управлении - person Edwin O.; 05.01.2016
comment
на самом деле это довольно просто, вот ссылка на демонстрацию: github.com/ksenior1/FixedSearchBar - person user2669841; 26.01.2016
comment
Работает ровно! И это проще реализовать, чем кажется. Спасибо - person Marcelo Gracietti; 31.01.2017