ios - IndexPathForCell 和 IndexPathForRowAtPoint 崩溃

标签 ios uitableview nsindexpath heightforrowatindexpath

我有带有静态分组单元格的 UITableViewController。在特定 View 中,我想删除一些单元格。如果我只是隐藏它们,它会留下一个空白空间,所以我想将单元格的 rowHeight 设置为 0。我在执行此操作时遇到了麻烦,因为我似乎无法获取要隐藏的单元格的 indexPath。我通过 IB 连接引用了它。仔细阅读后,似乎最好的方法是通过 heightForRowAtIndexPath 方法。这是我的代码:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSIndexPath *myIndexPath = [self.tableView indexPathForRowAtPoint:self.billToPostalCell.center]; 
    //crashes here

    if ([indexPath isEqual:myIndexPath]) {
        return 0; 
    }
    return 44;
}

在此之前,我正在尝试 IndexPathForCell,但也会崩溃。根据我的阅读,即使单元格不可见,heightForRowAtIndexPath 也应该有效。当它崩溃时,调试器中也没有任何显示。

最佳答案

你正在做的是导致无限递归导致...等等...堆栈溢出!

heightForRowAtIndexPath: 方法中,您不能向表格询问单元格或向 indexPath 询问行,因为这些方法需要知道单元格的高度。所以这些调用导致 heightForRowAtIndexPath: 被调用。由于您随后再次调用相同的违规方法,因此这种情况一直持续到事情变得火爆为止。

由于您的目标是隐藏单元格,因此您应该使用正确的 UITableView 方法 (deleteRowsAtIndexPaths:withRowAnimation:) 从表格中删除单元格。当然,您需要先更新数据模型(以删除行)。

关于ios - IndexPathForCell 和 IndexPathForRowAtPoint 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16157798/

相关文章:

javascript - 渐变不适用于 iOS 设备

ios - Swift:如何访问枚举的变量元素?

ios - 什么是下拉时在 UITableViewWrapperView 之前出现的 UIView?

iOS CoreData后台线程在cellForRowAtIndexPath中获取

基于最大倾斜度的 iOS 设备屏幕磁性方向?

iphone - ios - 如何在 wifi 网络中找到使用我的应用程序的人

swift - RealmSwift RealmCollectionChange tableView 崩溃

swift - macOS fatal error : Index out of range NSTableView

swift 3 相当于 indexAtPosition,urlRequest.url!.isEqual

ios - TableViewController - 一个键值与其他键值的偏移