Заголовок раздела простого стиля UITableView перерисовывается при просмотре поиска
Кто-нибудь успешно перезагрузил tableView, в то время как tableView находится в фоновом режиме контроллера дисплея панели поиска? Смотрите фото с тем, что происходит.
У меня есть UITableViewController с контроллером отображения поиска. Когда я вызываю reloadData для табличного представления UITableViewController, когда отображается табличное представление контроллера отображения поиска, заголовок разреза UITableViewController рисуется в представлении контроллера отображения поиска.
Вот снимок, который показывает вид заголовка раздела поверх представления контроллера отображения поиска:
Обновление: я упростил код до простого контроллера отображения поиска и UITableView. Если перезагрузка данных происходит в tableView с активным searchBar. Проблема все еще происходит.
4 ответа
Я надеюсь, вы знаете, что вам нужно два UITableView
s для панели поиска, чтобы работать. Когда поиск активен, вы должны управлять и отображать таблицу результатов поиска, в противном случае исходную.
Из документации Apple: The results are displayed in a table view that’s created by the search display controller.
Поэтому не стоит перезагружать оригиналUITableView
но лучше убедитесь, что ваш datasource
для результатов поиска таблица верна.
UISearchDisplayController
имеет свойство под названием searchResultsTableView
который вам не придется специально перезагружать с reloadData
, Скорее, он будет обновлен с помощью методов в UISearchDisplayDelegate
протокол, такой как searchDisplayController:shouldReloadTableForSearchString:
,
Ура,
Sascha
У меня была именно эта проблема. Если ваш случай похож на мой, причиной является [self.tableView reloadData], перерисовывающий заголовок заголовка self.tableView, даже когда self.tableView находится ниже searchResultsTableView.
[self.tableView reloadData] вызывался 1), когда я выбирал из моего источника данных табличного представления и 2) в установщике для моего fetchedResultsController.
Кроме того, если ваш контроллер tableView является делегатом fetchedResultsController, он получает обновления каждый раз, когда изменяется ваш управляемый документ Core Data. Это также вызывало перерисовку заголовка.
Решение: Я удалил [self.tableView reloadData] при заполнении результатов поиска. Кроме того, я удалил контроллер табличного представления как делегат fetchedResultsController.
Используя NSLog, попробуйте проверить, когда ваш заголовок вида в разрезе из UITableView рисуется точно. Может быть, тогда вы сможете понять, почему это происходит. Затем попробуйте использовать scrollEnabled=NO, как вы думаете.
Вы можете использовать простой UISearchBar, потому что без сверстников в вашем коде, не может помочь вам