此問題以前已被問到,但我無法獲得有關此問題的明確說明。我有一個簡單的應用程序與tableview和搜索功能。在viewDidLoad()
,我叫setUpSearchView()
這是這樣試圖在釋放視圖控制器時加載視圖控制器的視圖不允許用於UISearchViewController
let searchController = UISearchController(searchResultsController: nil)
searchController.searchResultsUpdater = self
searchController.hidesNavigationBarDuringPresentation = true
searchController.dimsBackgroundDuringPresentation = false
self.tableView.tableHeaderView = searchController.searchBar
此代碼不會無法正常工作定義。在控制檯上,我可以看到這個錯誤
Attempting to load the view of a view controller while it is deallocating is not allowed and may result in undefined behavior
而且,searchcontroller不正確的動畫效果,並且不調用updateSearchResultsForSearchController
委託當我在搜索欄鍵入。
但是,所有這些問題都可以通過對searchController初始化函數進行較小的更改而輕鬆修復。而不是聲明searchController
作爲函數中的局部變量,如果我在方法外聲明它是一個實例變量,如var searchController:UISearchController!
,一切正常,儘管我不知道爲什麼。
現在代碼看起來像這樣
var searchController:UISearchController!
在setUpSearchView()
searchController = UISearchController(searchResultsController: nil)
searchController.searchResultsUpdater = self
searchController.hidesNavigationBarDuringPresentation = true
searchController.dimsBackgroundDuringPresentation = false
self.tableView.tableHeaderView = searchController.searchBar
這裏是到ViewController的鏈接在GitHub上:https://github.com/tmsbn/marvel_heroes/blob/master/avengers/HeroesListController.swift
有人能解釋爲什麼發生這種情況?這是一個迅速的錯誤?或者這是iOS中我不知道的東西。
看到這一次,它可以幫助你http://stackoverflow.com/questions/32282401/attempting-to-load-the-view-of-a-view-controller-while-it-is -deallocating-uis –