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
}