我正在表格视图中创建表格单元格,它们正确加载并且您可以向下滚动它们但是如果向上滚动应用程序崩溃时出现错误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)
}
答案 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]]