首页 > 解决方案 > UITableView 滚动时崩溃

问题描述

我已经阅读了类似的问题,但仍然无法解决。我有一个在滚动时(快速)UITableView崩溃的功能。cellForRowAt崩溃不会发生在表中的特定点,而是随机发生。这是错误:

线程 1:致命错误:索引超出范围

这是我的cellForRowAt

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cellIdentifier = "menuCell"
    let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as? MenuTableCell
    return self.setMenuCell(cell: cell, indexPath: indexPath)
}

setMenuCell是:

private func setMenuCell(cell: MenuTableCell?, indexPath: IndexPath) -> MenuTableCell {
    print(indexPath.row, self.menuManager.menusCount)
    cell?.cliccaPerInfoLabel.text = LocalizedStrings.otherDishes
    cell?.altriPiattiLabel.isHidden = !((self.menuManager.getMenu(index: indexPath.row).getDishes().count) > 3)
    cell?.piatto3Label.isHidden = !((self.menuManager.getMenu(index: indexPath.row).getDishes().count) >= 3)
    cell?.numeroMenuLabel.text = "Menu \(indexPath.row+1)"
    cell?.numeroPiattiLabel.text = String(format: LocalizedStrings.numberOfDishes, (self.menuManager.getMenu(index: indexPath.row).getDishes().count))
    cell?.piatto1Label.text = String(format: LocalizedStrings.dishNumber, 1, (self.menuManager.getMenu(index: indexPath.row).getDishes()[0].getDescription()))
    cell?.piatto2Label.text = String(format: LocalizedStrings.dishNumber, 2, (self.menuManager.getMenu(index: indexPath.row).getDishes()[1].getDescription()))
    return cell!
    }

self.menuManager是一个跟踪菜单的对象。无法理解出了什么问题。提前感谢您的帮助!

更新

这是我的numberOfRowsInSection功能:

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return self.menuManager.menusCount
}

标签: iosswiftuitableview

解决方案


这是一个经典的读者-作者问题。menuManager.menusCount我认为您应该使,等正在访问的对象是menuManager.getMenu线程安全的。


推荐阅读