панель быстрого поиска и панель навигации будут скрыты после запуска

в моем приложении Swift 2 у меня есть табличное представление с панелью поиска:

введите здесь описание изображения

Но если нажать на строку поиска, моя панель навигации и панель поиска будут скрыты.

введите здесь описание изображения

Это мой код, который находится в viewDidLoad

        self.resultSearchController = ({
            let controller = UISearchController(searchResultsController: nil)
            controller.searchResultsUpdater = self
            controller.dimsBackgroundDuringPresentation = false
            controller.searchBar.sizeToFit()
            controller.hidesNavigationBarDuringPresentation = true
            self.MyTable.tableHeaderView = controller.searchBar

            return controller
        })()

В начале я также получаю это сообщение:

Попытка загрузить представление контроллера представления во время его освобождения не допускается и может привести к неопределенному поведению ()

Мой вопрос, где моя ошибка? :/


person Stack108    schedule 10.04.2016    source источник
comment
Пробовали ли вы создать глобальный (и надежный) объект для UISearchController?   -  person Nishant    schedule 10.04.2016
comment
что вы думаете о создании глобального и сильного объекта? у меня есть эта строка в начале: var resultSearchController = UISearchController()   -  person Stack108    schedule 10.04.2016


Ответы (2)


из этого руководства вы можете использовать этот код для решения проблемы.

self.navigationController!.navigationBar.translucent = false
searchController!.hidesNavigationBarDuringPresentation = false

// This makes the view area include the nav bar even though it is opaque.
// Adjust the view placement down.
self.extendedLayoutIncludesOpaqueBars = true
self.edgesForExtendedLayout = UIRectEdge.Top
person alicheh    schedule 06.09.2016

Вы должны изменить свой код следующим образом, если хотите, чтобы он работал идеально:

        self.resultSearchController = UISearchController(searchResultsController: nil)
        self.resultSearchController.searchResultsUpdater = self
        self.resultSearchController.searchBar.delegate = self
        self.definesPresentationContext = true
        self.resultSearchController.dimsBackgroundDuringPresentation = false
        self.resultSearchController.hidesNavigationBarDuringPresentation = true
        if #available(iOS 11.0, *) {
            self.navigationItem.searchController = self.resultSearchController
        } else {
            self.tableView.tableHeaderView = self.resultSearchController.searchBar
        }
person Chowdhury Md Rajib Sarwar    schedule 06.03.2018