【问题标题】:search result not work went add tableviewcell搜索结果不起作用去添加tableviewcell
【发布时间】:2018-07-01 14:07:11
【问题描述】:

在我添加自定义表格视图单元之前,搜索栏工作得很好。当我搜索与数组匹配的关键字时,它会中断。当我搜索错误时,它不会中断。

var filteredArray = [String]()
var searchController = UISearchController()
var result = UITableViewController()

override func viewDidLoad() {
    super.viewDidLoad()

    searchController = UISearchController(searchResultsController: result)
    tableView.tableHeaderView = searchController.searchBar
    searchController.searchResultsUpdater = self

    result.tableView.delegate = self
    result.tableView.dataSource = self
    result.tableView.register(UITableView.self, forCellReuseIdentifier: "Cell")

}

//config seachbar
func updateSearchResults(for searchController: UISearchController) {
    filteredArray = array.filter( { (array : String) -> Bool in
        if array.contains(searchController.searchBar.text!)
        {
            return true
        }
        else
        {
            return false
        }

    })
    result.tableView.reloadData()
}

这是一个tableview cellForRow

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! SanPhamTableViewCell


    //    fill data into cell   
    if tableView == result.tableView
    {
        cell.name.text = filteredArray[indexPath.row]
        cell.img.image = UIImage(named:  ArrayImage[indexPath.row])

        cell.price.text = ArrayPrice[indexPath.row]
        cell.price.isUserInteractionEnabled = false

        cell.desc.text = arrayDesc[indexPath.row]
        cell.desc.isUserInteractionEnabled = false
    }
    else
    {
        cell.name.text = arrayName[indexPath.row]
        cell.img.image = UIImage(named:  arrayImage[indexPath.row])

        cell.price.text = arrayPrice[indexPath.row]
        cell.price.isUserInteractionEnabled = false

        cell.desc.text = arrayDesc[indexPath.row]
        cell.desc.isUserInteractionEnabled = false        }

    return cell
}

【问题讨论】:

    标签: ios swift uitableview searchbar


    【解决方案1】:

    你需要像这样在viewDidLoad注册单元格,替换:

    result.tableView.register(UITableView.self, forCellReuseIdentifier: "Cell")
    

    与:

    result.tableView.register(SanPhamTableViewCell.self, forCellReuseIdentifier: "Cell")
    

    //

    编辑: 用于 xib

    result.tableView.register(UINib(nibName: "SanPhamTableViewCell", bundle: nil), forCellReuseIdentifier: Cell)
    

    【讨论】:

    • 您不能为同一个标识符注册两种不同的单元格类型。
    • 另一个寄存器是错误的,这是它的替代品
    • 对不起,以为你的意思是除了。也许澄清一下,这是一个替代品,而不是一个补充。
    • 我会尝试,但它有一个新问题 cell.name.text = filtersArray[indexPath.row] “线程 1:致命错误:在展开可选值时意外发现 nil”
    • 你有 xib 单元还是以编程方式创建它
    【解决方案2】:

    我不确定你是如何制作SanPhamTableViewCell的,但如果你使用的是自定义笔尖,那么该笔尖也必须在tableView注册

    result.tableView.register(UINib(nibName: "SanPhamTableViewCell", bundle: nil), forCellWithReuseIdentifier: "Cell")
    

    【讨论】:

    • “无法使用类型为 '(UINib, forCellWithReuseIdentifier: String) 的参数列表调用 'register'”我尝试并出现这样的错误
    • 您是否在 nib 文件中为 SanPhamTableViewCell 设置标识符?
    猜你喜欢
    • 2015-10-12
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-27
    • 2017-03-03
    相关资源
    最近更新 更多