OStack程序员社区-中国程序员成长平台

标题: ios - swift 4 : UITableView cellForRow crash [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 03:58
标题: ios - swift 4 : UITableView cellForRow crash

我不明白我做错了什么。我有一个名为 TblView_Categorie 的 UITableView,我想做的是在所需的 indexpath 处获取单元格:

这是我的代码:

let myRecordindex = IndexPath(row: myRecordcheck, section: 0)

let cell = tblViewcategorie.cellForRow(at: myRecordindex) as! categorieTVC 

问题是如果 MyRecordIndex 显示在屏幕上(不需要滚动)一切正常

如果屏幕上未显示 MyRecordIndex(需要滚动),我会遇到此错误:

Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value

如果我手动滚动到所需的索引并输入所需的 MyRecordIndex 一切正常

我尝试使用下面的代码自动滚动:滚动工作但仍然出现同样的错误

   self.tblViewCategorie.scrollToRow(at: myRecordindex, at: UITableViewScrollPosition.middle, animated: true)

为什么会出现这个错误?我要做的就是让单元格位于所需的索引路径以更改颜色、字体等。

//更新 cellForRowAt 实现

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell") as! categorieTVC
    if let categorieName = self.fetchedResultsController.object(at: indexPath).categorieName{
        cell.setListeDesCategories(categorieName: categorieName)
    }
    return cell
}

//更新代码和崩溃截图

Crash and code



Best Answer-推荐答案


你不能显式地展开

 let cell = TblView_Categorie.cellForRow(at: MyRecordIndex) as! CategorieTVC 

因为单元格我不可见,所以它将为零 -> 崩溃

试试

 let cell = TblView_Categorie.cellForRow(at: MyRecordIndex) as? CategorieTVC 

 if(cell != nil)
 {

 }

编辑:滚动到单元格并在 cellForRow 之后调度

let myRecordindex = IndexPath(row: myRecordcheck, section: 0)

self.tblViewCategorie.scrollToRow(at: myRecordindex, at: UITableViewScrollPosition.middle, animated: true)

DispatchQueue.main.asyncAfter(deadline: .now() + 1.0 )) {

 let cell = TblView_Categorie.cellForRow(at: MyRecordIndex) as? CategorieTVC 

 if(cell != nil)
 {

 }
}

关于ios - swift 4 : UITableView cellForRow crash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48630808/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4