You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

搜索时UITableView未刷新,venuesShown数组更新正常但界面无变化

问题根因定位

最核心的错误在cellForRowAt代理方法的搜索状态分支:完成自定义cell的赋值逻辑后没有返回构造好的cell,最后默认返回了空白的UITableViewCell(),导致界面看不到搜索结果。同时代码存在拼写错误、可选值强制解包风险等潜在问题。


修复步骤

1. 修复cellForRowAt的返回逻辑与拼写错误

补全搜索分支的return语句,同时修正默认返回的类名拼写错误:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    if venueArray.count > 0 && !searchIsActive {
        let cell = tableView.dequeueReusableCell(withIdentifier: "ChooseVenueTableViewCell", for: indexPath) as! ChooseVenueTableViewCell
        loadImageWith(imgView: cell.barImgView, url: venueArray[indexPath.row].venueImgNSString as String?)
        cell.venueLabel.text = venueArray[indexPath.row].venueName
        return cell
    } else if venueArray.count > 0 && searchIsActive {
        let cell = tableView.dequeueReusableCell(withIdentifier: "ChooseVenueTableViewCell", for: indexPath) as! ChooseVenueTableViewCell
        loadImageWith(imgView: cell.barImgView, url: venuesShown[indexPath.row].venueImgNSString as String?)
        cell.venueLabel.text = venuesShown[indexPath.row].venueName
        // 补上缺少的return语句
        return cell
    }
    // 修正拼写错误:UITableviewcell -> UITableViewCell
    return UITableViewCell()
}

2. 优化搜索边界逻辑

搜索清空时同步重置搜索结果数组,避免残留旧数据:

func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
    if searchText.isEmpty {
        searchIsActive = false
        // 清空搜索缓存
        venuesShown.removeAll()
    } else {
        searchIsActive = true
        // 去掉venueName的强制解包,避免空值闪退
        self.venuesShown = venueArray.filter { $0.venueName?.range(of: searchText, options: [.anchored, .caseInsensitive, .diacriticInsensitive]) != nil }
    }
    self.chooseVenueTableView.reloadData()
}

3. 可选校验项

  • 确认getBars异步回调中已经正确给venueArray赋值,且数组赋值完成后再调用reloadData,保证数据源时序正确
  • 替换代码中所有!强制解包逻辑,改为可选绑定或默认值,避免空值闪退

内容的提问来源于stack exchange,提问作者WhySoSerious33

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 12:15:04