菜鸟教程小白 发表于 2022-12-13 03:58:17

ios - swift 4 : UITableView cellForRow crash


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

<p>这是我的代码:</p>

<pre><code>let myRecordindex = IndexPath(row: myRecordcheck, section: 0)

let cell = tblViewcategorie.cellForRow(at: myRecordindex) as! categorieTVC
</code></pre>

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

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

<blockquote>
<p>Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value</p>
</blockquote>

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

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

<pre><code>   self.tblViewCategorie.scrollToRow(at: myRecordindex, at: UITableViewScrollPosition.middle, animated: true)
</code></pre>

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

<p><strong>//更新 cellForRowAt 实现</strong> </p>

<pre><code>func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -&gt; UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: &#34;Cell&#34;) as! categorieTVC
    if let categorieName = self.fetchedResultsController.object(at: indexPath).categorieName{
      cell.setListeDesCategories(categorieName: categorieName)
    }
    return cell
}
</code></pre>

<p>//更新代码和崩溃截图</p>

<p> <a href="/image/lslg9.png" rel="noreferrer noopener nofollow"><img src="/image/lslg9.png" alt="Crash and code"/></a> </p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>你不能显式地展开 </p>

<pre><code> let cell = TblView_Categorie.cellForRow(at: MyRecordIndex) as! CategorieTVC
</code></pre>

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

<p>试试</p>

<pre><code> let cell = TblView_Categorie.cellForRow(at: MyRecordIndex) as? CategorieTVC

if(cell != nil)
{

}
</code></pre>

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

<pre><code>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)
{

}
}
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios -swift4 : UITableView cellForRow crash,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/48630808/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/48630808/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - swift 4 : UITableView cellForRow crash