无法将 UISearchController 添加到 UIViewController
Cannot add UISearchController to UIViewController
我正在尝试将 UISearchController
添加到以编程方式创建的 UITableView
,在 UIViewController
class 中。这是我的代码:
var resultSearchController = UISearchController()
var myTableView = UITableView()
override func viewDidLoad() {
super.viewDidLoad()
myTableView.frame = CGRectMake(0, 0, view.bounds.width, view.bounds.height)
myTableView.delegate = self
myTableView.dataSource = self
myTableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
self.resultSearchController = ({
let controller = UISearchController(searchResultsController: nil)
controller.searchResultsUpdater = self //ERROR
controller.searchBar.delegate = self //ERROR
controller.dimsBackgroundDuringPresentation = false
controller.searchBar.sizeToFit()
self.myTableView.tableHeaderView = controller.searchBar
return controller
})()
UIApplication.sharedApplication().keyWindow?.addSubview(myTableView)
}
我得到的两个错误是
- Cannot assign a value of type 'ViewController' to a value of type 'UISearchBarDelegate?
- Cannot assign a value of type 'ViewController' to a value of type 'UISearchResultsUpdating?
当我的 class 被 class 子UITableViewController
时,此代码有效。那么为什么它不适用于 UIViewController?
确保您的 UIViewController
符合协议 UISearchBarDelegate
和 UISearchResultsUpdating
。
class YourViewController: UIViewController, UISearchBarDelegate, UISearchResultsUpdating {
// …truncated
}
UITableViewController
自动在幕后执行此操作。
我正在尝试将 UISearchController
添加到以编程方式创建的 UITableView
,在 UIViewController
class 中。这是我的代码:
var resultSearchController = UISearchController()
var myTableView = UITableView()
override func viewDidLoad() {
super.viewDidLoad()
myTableView.frame = CGRectMake(0, 0, view.bounds.width, view.bounds.height)
myTableView.delegate = self
myTableView.dataSource = self
myTableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
self.resultSearchController = ({
let controller = UISearchController(searchResultsController: nil)
controller.searchResultsUpdater = self //ERROR
controller.searchBar.delegate = self //ERROR
controller.dimsBackgroundDuringPresentation = false
controller.searchBar.sizeToFit()
self.myTableView.tableHeaderView = controller.searchBar
return controller
})()
UIApplication.sharedApplication().keyWindow?.addSubview(myTableView)
}
我得到的两个错误是
- Cannot assign a value of type 'ViewController' to a value of type 'UISearchBarDelegate?
- Cannot assign a value of type 'ViewController' to a value of type 'UISearchResultsUpdating?
当我的 class 被 class 子UITableViewController
时,此代码有效。那么为什么它不适用于 UIViewController?
确保您的 UIViewController
符合协议 UISearchBarDelegate
和 UISearchResultsUpdating
。
class YourViewController: UIViewController, UISearchBarDelegate, UISearchResultsUpdating {
// …truncated
}
UITableViewController
自动在幕后执行此操作。