Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Can';无法从cellForRowAtIndexPath中的上一行获取单元格_Ios_Swift_Uitableview - Fatal编程技术网

Ios Can';无法从cellForRowAtIndexPath中的上一行获取单元格

Ios Can';无法从cellForRowAtIndexPath中的上一行获取单元格,ios,swift,uitableview,Ios,Swift,Uitableview,我有一个带有一堆自定义TableViewCell的tableView。我有一个按钮,允许用户在tableview的底部添加一个新单元格。我希望此新单元格根据其上方单元格中显示的数据显示一些数据。因此,在我的tableView(cellForRowAtIndexPath)delegate方法中,我为前一行调用tableView.cellForRowAtIndexPath,并将结果强制转换到我的自定义单元格。但是,这会导致崩溃 if (indexPath.row > 0) { let

我有一个带有一堆自定义TableViewCell的tableView。我有一个按钮,允许用户在tableview的底部添加一个新单元格。我希望此新单元格根据其上方单元格中显示的数据显示一些数据。因此,在我的
tableView(cellForRowAtIndexPath)
delegate方法中,我为前一行调用
tableView.cellForRowAtIndexPath
,并将结果强制转换到我的自定义单元格。但是,这会导致崩溃

if (indexPath.row > 0) {
    let previousCell = tableView.cellForRowAtIndexPath(NSIndexPath(forRow: indexPath.row - 1, inSection: indexPath.section)) as! myCustomCell
}

有趣的是,如果我不强制演员,它不会崩溃。但是,这对我没有用处,因为我需要强制转换并访问一些只存在于自定义类中的属性。我确信(indexPath.row-1)处的单元格是我自定义类的单元格

如注释中所述,
UITableView.cellforrowatinedexpath(\uindexath:nsindexath)
当索引路径指向当前不在屏幕上的单元格时,返回
nil
。另见

您可以在表视图的数据源上调用该方法,而不是在表视图上调用该方法<代码>UITableViewDataSource.tableView(tableView:UITableView, cellForRowAtIndexPath:nsindepath)是一个必须实现的函数,无论索引路径在屏幕上还是屏幕下,它都应该返回一个正确的单元格


然而,一种更好的方法(同样,如评论中所述)是从数据模型而不是单元格中获取单元格内容。

您在哪里尝试这样做,崩溃到底是什么?不要从单元格中提取数据,从模型中获取数据Vladimir,这是有意义的。愚蠢的错误。但是,我仍然很好奇为什么会发生崩溃。@JohnDoe:
cellforrowatinexpath
如果索引路径指向当前不可见的单元格,则返回
nil