#ios #swift #uisearchcontroller
#iOS #swift #uisearchcontroller
Вопрос:
Я пытаюсь создать нижнее меню слайдера, содержащее контроллер представления таблицы и контроллер поиска внутри заголовка представления таблицы. На этом этапе я добавил контроллер представления таблицы в качестве дочернего контроллера представления. После фокусировки панели поиска срабатывает режим затемнения, но он перекрывает основную границу экрана. Я ожидаю, что затемняющий вид останется внутри границ дочернего контроллера представления. Я не мог понять причину, по которой затемнение просмотра всегда добавляло основные границы экрана? У меня есть снимок экрана, чтобы продемонстрировать проблему, с которой я столкнулся.
Спасибо за вашу помощь.
class ChildTableViewController: UITableViewController {
lazy var searchController: UISearchController = {
let temp = UISearchController(searchResultsController: resultSearchController)
temp.dimsBackgroundDuringPresentation = true
return temp
}()
private var resultSearchController = ResultSearchTableViewController(style: .plain)
override func viewDidLoad() {
super.viewDidLoad()
prepareViewController()
}
func prepareViewController() {
self.tableView = UITableView(frame: .zero, style: .plain)
self.tableView.separatorStyle = .singleLine
self.tableView.register(ChildTableViewCell.self, forCellReuseIdentifier: ChildTableViewCell.identifier)
self.tableView.tableHeaderView = searchController.searchBar
self.definesPresentationContext = true
}
}
Комментарии:
1. Откуда вы его знаете
UIDimmingView
? Я не могу понять, что из кода, который вы опубликовали здесь, есть ли у вас какой-либо другой код для просмотра, который может помочь больше?2. Привет, я отредактировал снимок экрана. Вы можете мне поверить, это UIDimmingView 🙂
Ответ №1:
Даже если его содержимое отображается в контексте дочернего контроллера представления, сам контроллер поиска является представленным контроллером представления и предотвращает взаимодействие с любым другим интерфейсом. Таким образом, имеет смысл, что если вы запрашиваете режим затемнения, режим затемнения охватывает все, кроме интерфейса контроллера поиска. Если вам это не нравится, установите obscuresBackgroundDuringPresentation
значение false
.
(Вы не должны использовать dimsBackgroundDuringPresentation
. Используйте obscuresBackgroundDuringPresentation
вместо этого.)
Комментарии:
1. Итак, вы говорите, что везде, где я устанавливаю управление поиском, dimmingView охватывает все представленные контроллеры просмотра на экране.