我一直在寻找如何在我的应用中解决我最大的问题之一,但即使我遵循此iOS/Swift: tableView cellForRowAtIndexPath crash,我的问题仍然存在。根据我提供的链接,在清空数组后总是记得重新加载数据。但问题仍然存在,我不知道如何解决。
有些日志Crashlytics ...
我的tableview cellForRowAt函数,我也在我的故事板中设置了单元格标识符。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
// Crashed somewhere here
let currentRow = displayMainCell[indexPath.row]
guard let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as? MainCell else { return UITableViewCell() }
if currentRow.id == "wotd" {
cell.contentLabel.font = UIFont(name: "Helvetica Neue", size: 22)
} else {
cell.contentLabel.font = UIFont(name: "Helvetica Neue", size: 13)
}
cell.titleLabel.text = currentRow.title
cell.contentLabel.text = currentRow.content
return cell
}
已添加:我的didSelectRowAt在不同的View Controller中也有问题。这是实施。
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let currentRow = wordLists[indexPath.row]
textField.text = currentRow
let currentWordToSearch = currentRow.condenseWhitespace().lowercased()
indicator.startAnimating()
saveWordToHistory(currentWordToSearch)
fetchWordFromDB(currentWordToSearch)
wordChange(wordToEncode: currentWordToSearch, uuid: getDeviceID())
wordLists = []
tableView.reloadData()
setupDatabase(suggWords: currentWordToSearch)
tableView.isHidden = true
textField.resignFirstResponder()
}
答案 0 :(得分:1)
检查以下函数是否不返回常量值。它应该是这样的:
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return arrayName.count;
}
如果你已经这样做了。我建议你尝试以下代码:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as? MainCell else { return UITableViewCell() }
if arrayName.count != 0 {
let currentRow = displayMainCell[indexPath.row]
if currentRow.id == "wotd" {
cell.contentLabel.font = UIFont(name: "Helvetica Neue", size: 22)
} else {
cell.contentLabel.font = UIFont(name: "Helvetica Neue", size: 13)
}
cell.titleLabel.text = currentRow.title
cell.contentLabel.text = currentRow.content
}
return cell
}