我尝试使用此方法获取indexPath的单元格,但我得到了这个" EXC_BAD_ACCESS"错误。
但是,如果我使用self.tableView(tableView, cellForRowAtIndexPath:indexPath)
,它可以正常工作。
我很困惑这两种方法之间的区别是什么?
答案 0 :(得分:1)
使用self.tableView(tableView, cellForRowAtIndexPath:indexPath)
代码是您的View Controller,它出列了一个合适的新单元格。然而,如果单元格不可见,则表视图上的cellForRowAtIndexPath
方法返回nil。由于heightForRowAtIndexPath
正在尝试确定哪些行是可见的,因此它不起作用就不足为奇了。
This所以答案显示在cellForRowAtIndexPath
内调用heightForRowAtIndexPath
递归调用自身。这就是你收到错误的原因。
答案 1 :(得分:1)
细胞可能尚不存在。考虑到tableview可能要求高度,以便它可以构建单元格。因此,您需要一个单元格才能存在。我必须进行测试才能确定。
UITableViewDelegate - tableView:heightForRowAtIndexPath: 询问代表在指定位置使用行的高度。
对于此功能,您应该返回该单元格所需的高度。
UITableViewDataSource - tableView:cellForRowAtIndexPath: (必需) 要求单元格的数据源插入表视图的特定位置。
UITableView - cellForRowAtIndexPath: 返回指定索引路径的表格单元格。
答案 2 :(得分:0)
这两种方法完全不同,一种是针对用户,一种是针对表格视图的委托