我遇到了range
错误......
错误发生在cell.creditLabel.text = numOfDays[(indexPath as NSIndexPath).row] + "days"
。
如果我将tableView.reloadData()
放在cell.nameLabel.text = nameArray[(indexPath as NSIndexPath).row]
然后模拟器中没有任何内容......
我该如何解决这个问题..?
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.nameArray.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell : MoneyTableViewCell = tableView.dequeueReusableCell(withIdentifier: "MoneyTableViewCell", for: indexPath) as! MoneyTableViewCell
cell.nameLabel.text = nameArray[(indexPath as NSIndexPath).row]
cell.creditLabel.text = numOfDays[(indexPath as NSIndexPath).row] + "days"
cell.levelLabel.text = creditArray[(indexPath as NSIndexPath).row]
cell.layoutIfNeeded()
return cell
}
答案 0 :(得分:5)
您需要检查阵列。从我在这里看到的情况来看,numOfDays
的元素少于nameArray
。此外,当你在那里检查creditArray
时:)
此外,无需投射到NSIndexPath
。
答案 1 :(得分:1)
“numOfDays”数组中的元素数小于“nameArray”数组中的元素数
答案 2 :(得分:1)
检查数组是否包含正确数量的项目:
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.nameArray.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell : MoneyTableViewCell = tableView.dequeueReusableCell(withIdentifier: "MoneyTableViewCell", for: indexPath) as! MoneyTableViewCell
cell.nameLabel.text = nameArray[indexPath.row]
if numOfDays.count < indexPath.row {
cell.creditLabel.text = numOfDays[indexPath.row] + "days"
}
if creditArray.count < indexPath.row {
cell.levelLabel.text = creditArray[indexPath.row]
}
return cell
}
另外,我已经删除了不必要的indexPath和layoutIfNeeded(单元格将再次绘制,因为它是新的)。