У меня есть панель поиска, реализованная с использованием UISearchController
внутри моей панели навигации.Существует также табличное представление, верхнее ограничение которого установлено в нижней части панели навигации.
Требуемое поведение: При нажатии кнопки отмены панель поиска скрывается, а верхнее ограничениепредставления таблицы возвращается к тому, что было до удаления панели поиска (см. снимок экрана # 1 в конце этого сообщения)
Текущее поведение: Когданажата кнопка отмены, строка поиска исчезла, но верхнее ограничение tableView не изменяется в ответе (см. снимок экрана № 3 )
Возможное решение этой проблемы - вручнуюобновлять ограничения при каждом нажатии кнопки отмены.Однако я не могу найти способ доступа к ограничениям tableView из метода UISearchBarDelegate
searchBarCancelButtonClicked
Фрагмент кода:
class ViewController: UIViewController {
let searchController = UISearchController(searchResultsController: nil)
override func viewDidLoad() {
super.viewDidLoad()
searchController.searchBar.delegate = self
/* Adding search button to the navbar */
/* setting tableView constraints */
/* tableView delegate/datasource methods, etc... */
}
@objc func searchButtonTapped(_ sender: UIBarButtonItem) {
setup()
navigationItem.searchController = searchController
}
func setup() {
searchController.hidesNavigationBarDuringPresentation = false
searchController.obscuresBackgroundDuringPresentation = false
searchController.searchBar.sizeToFit()
}
}
extension UISearchBarDelegate {
public func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
navigationItem.searchController = nil
/* Cannot access tableview constraints from here because extension is outside of the class */
}
}
Перед поискомкнопка нажата.
До нажатия кнопки отмены.
После нажатия кнопки отмены.