8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

TableView 冻结

Doug Maurer 1月前

34 0

我有一个项目数组和用于显示它们的 TableView。项目包含 4 个属性。并且有一个方法可以随机生成项目。最初,数组为空,但在 viewDidLoad 中我有方法,

我有一组项目和用于显示它们的 TableView。项目包含 4 个属性。并且有一个方法可以随机生成项目。最初,数组为空,但在 viewDidLoad 中,我有一个方法,它将 100 个项目附加到数组中,延迟约 1 秒。数组会一直附加,直到其计数达到约 1_000_000 个项目。当我启动应用程序时,它会冻结。

这是我的 tableView 方法:

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return model.count
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: DealCell.reuseIidentifier, for: indexPath) as! DealCell
        guard model.count != 0 else {
            cell.instrumentNameLabel.text = "no data"
            cell.priceLabel.text = "no data"
            cell.amountLabel.text = "no data"
            cell.sideLabel.text = "no data"
            return cell
        }
        cell.instrumentNameLabel.text = "\(model[indexPath.row].instrumentName)"
        cell.priceLabel.text = "\(model[indexPath.row].price)"
        cell.amountLabel.text = "\(model[indexPath.row].amount)"
        cell.sideLabel.text = "\(model[indexPath.row].side)"
        return cell
    }

附加数组的函数:

server.subscribeToUpdate { updates in
            self.model.append(contentsOf: updates)
            self.tableView.reloadData()
        }

如何解决这个问题?可能是将 \'numberOfRowsInSection\' 的计数器设置为 100,然后当滚动到第 100 个项目时将其增加到 200 等。或者有更简洁的解决方案吗?

尝试使用 ReusableCell,但没有任何反应。

帖子版权声明 1、本帖标题:TableView 冻结
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Doug Maurer在本站《uitableview》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 该生成是否发生在主线程之外?听起来您正在阻止主线程。尝试将对象生成分派到另一个队列,然后在主队列上重新加载表视图。

返回
作者最近主题: