拥有财产
var resultSearchController = UISearchController()
在viewDidLoad()方法上创建UISearchController
self.resultSearchController = ({
let controller = UISearchController(searchResultsController: nil)
controller.searchResultsUpdater = self
controller.dimsBackgroundDuringPresentation = false
controller.searchBar.sizeToFit()
controller.searchBar.barStyle = UIBarStyle.black
controller.searchBar.barTintColor = UIColor.white
controller.searchBar.backgroundColor = UIColor.clear
controller.hidesNavigationBarDuringPresentation = false
self.tableView.tableHeaderView = controller.searchBar
return controller
})()
结果是具有正常显示加号的注释文本,特别是在每个单元格的左上角显示文本的开头。 我该怎么办? 附:弄清楚它很可能与UISearchBar
无关答案 0 :(得分:1)
我不熟悉你如何创建resultSearchController,因为我从未见过这样的结构。但是,这可能是我有限的知识。我会以更有可能成功的结果创建resultSearchController。
lazy var resultSearchController : UISearchController = {
let controller = UISearchController(searchResultsController: nil)
controller.searchResultsUpdater = self
controller.dimsBackgroundDuringPresentation = false
controller.searchBar.sizeToFit()
controller.searchBar.barStyle = UIBarStyle.black
controller.searchBar.barTintColor = UIColor.white
controller.searchBar.backgroundColor = UIColor.clear
controller.hidesNavigationBarDuringPresentation = false
self.tableView.tableHeaderView = controller.searchBar
return controller
}()
这是懒惰地初始化将在使用时创建的变量并获得您定义的所有设置的正确方法。
如果这不起作用,那么定义和初始化就不是问题所在,你应该展示一些可能出错的代码。
答案 1 :(得分:0)
我找到了我犯了错误的台词。我使用了属性cell.textLabel
而不是cell.noteLabel
。 Ty适合你的时间。
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cellIdentifier = "NoteTableViewCell"
let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as! NoteTableViewCell
let note: Note
if self.resultSearchController.isActive {
note = filteredNotes[indexPath.row]
cell.textLabel?.text = filteredNotes[indexPath.row].note
} else {
note = notes[indexPath.row]
cell.textLabel?.text = notes[indexPath.row].note
}
return cell
}