滚动UITableView时应用程序崩溃

时间:2017-07-26 12:04:33

标签: ios swift xcode uitableview

我正在表格视图中创建表格单元格,它们正确加载并且您可以向下滚动它们但是如果向上滚动应用程序崩溃时出现错误fatal error: Index out of range

这是产生表格单元格的代码

我对swift编码很新,所以请明确你的答案

 public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
    {
        return(tableRows.count)
    }

    var howmanyindex = 0

    public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
    {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! ReviewControllerTableViewCell
        cell.label1.text = profilerComments[tableRows[howmanyindex]]
        cell.label2.text = String(profilerRatings[tableRows[howmanyindex]])
        howmanyindex += 1

        return(cell)
    }

4 个答案:

答案 0 :(得分:4)

问题似乎与howmanyindex有关。由于您使用的是可重复使用的单元格,如果某个单元格离开屏幕的可见部分,cellForRowAt将在某个位置被调用几次。

只需使用indexPath.row索引数据源数组。

public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! ReviewControllerTableViewCell
    cell.label1.text = profilerComments[tableRows[indexPath.row]]
    cell.label2.text = String(profilerRatings[tableRows[indexPath.row]])
    return cell
}

答案 1 :(得分:2)

当tableView滚动时,howmanyindex += 1对每个可见单元格都在增加,因此索引超出了tableRows数组,你使用tableRows的indexpath.row会更好。

答案 2 :(得分:2)

无需手动跟踪表的索引howmanyindex,因为它可能与您的数据不同(或返回计数),所以当您从数组中获取数据时,它可能来自数组并且您崩溃了

因此,您可以从 indexPath.row

获取当前的单元格索引
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! ReviewControllerTableViewCell
        cell.label1.text = profilerComments[tableRows[indexPath.row]]
        cell.label2.text = String(profilerRatings[tableRows[indexPath.row]])

        return(cell)
}

答案 3 :(得分:1)

使用

cell.label1.text = profilerComments[tableRows[indexpath.row]]

取代

cell.label1.text = profilerComments[tableRows[howmanyindex]]