SearchController в iOS13 - PullRequest
       7

SearchController в iOS13

0 голосов
/ 01 октября 2019

Я добавляю searchController в навигационный элемент на действие. В iOS12 он отображается правильно, но в iOS 13 он не отображается. При отладке иерархии представления он показывает, что панель поиска была добавлена, но ее высота была установлена ​​на ноль. Не могу найти правильное решение.

Код:

func setupSearchController() {

    searchController = UISearchController(searchResultsController: nil)
    searchController.searchResultsUpdater = self as UISearchResultsUpdating
    searchController.searchBar.placeholder = "Search here..."
    searchController.searchBar.delegate = self as UISearchBarDelegate
    searchController.searchBar.tintColor = .white
    searchController.searchBar.barTintColor = .white
    searchController.hidesNavigationBarDuringPresentation = false
    searchController.obscuresBackgroundDuringPresentation = false
    searchController.searchBar.showsCancelButton = true 

    if let textfield = searchController.searchBar.value(forKey: "searchField") as? UITextField {

        textfield.textColor = UIColor.blue

        if let backgroundview = textfield.subviews.first {

            // Background color
            backgroundview.backgroundColor = UIColor.white

            // Rounded corner
            backgroundview.layer.cornerRadius = 10;
            backgroundview.clipsToBounds = true;
        }
    }

    if #available(iOS 11.0, *) {
        self.navigationItem.searchController = searchController
    } else {
        self.tblView.tableHeaderView = searchController.searchBar
    }
}

В Навигаторе отладки,

enter image description here

Инспектор размеров,

enter image description here

Ответы [ 2 ]

0 голосов
/ 01 октября 2019

Ваш код отлично работает для меня:

enter image description here

Возможно, ваша навигационная панель свернута? Если свойство hidesSearchBarWhenScrolling вашего элемента навигации имеет значение true, панель навигации может свернуться, чтобы скрыть панель поиска.

0 голосов
/ 01 октября 2019

Попробуйте установить рамку для строки поиска

searchController. searchBar.frame = CGRect(x: 0, y: 0, width:view.frame.size.width, height: 50)
...