TableView 显示单元格不正确
TableView displaying cells uncorrectly
有一个属性
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
})()
结果是注释文本正常显示加号,特别是在每个单元格左上角的文本上显示开始。
我能做错什么?
P.S。发现它很可能与 UISearchBar
无关
我不熟悉你是如何创建 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
}()
这是延迟初始化将在使用时创建的变量并获取您定义的所有设置的正确方法。
如果这不起作用,则问题不是定义和初始化,您应该在可能出错的地方显示更多代码。
我发现我写错了那几行。我使用 属性 cell.textLabel
而不是 cell.noteLabel
。时间不多了。
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
}
有一个属性
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
})()
结果是注释文本正常显示加号,特别是在每个单元格左上角的文本上显示开始。 我能做错什么? P.S。发现它很可能与 UISearchBar
无关我不熟悉你是如何创建 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
}()
这是延迟初始化将在使用时创建的变量并获取您定义的所有设置的正确方法。
如果这不起作用,则问题不是定义和初始化,您应该在可能出错的地方显示更多代码。
我发现我写错了那几行。我使用 属性 cell.textLabel
而不是 cell.noteLabel
。时间不多了。
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
}