如何在目标C iOS中调用cellForRowAtIndexPath获取单元格?

时间:2017-07-21 07:59:34

标签: ios objective-c uitableview

我们可以从以下网站获取一个单元格:

UITableViewCell * cell = [self tableView:tableVie cellForRowAtIndexPath:indexPath]

但它会调用方法cellForRowAtIndexPath:

如果我知道单元格的标签或indexPath,那么有没有办法获取指定的单元而不能调用cellForRowAtIndexPath:

添加一些我无法呼叫cellForRowAtIndexPath:indexPath

的原因

我想获取方法cellForHeightAtIndexPath中的单元格来重置每个单元格的高度。 :

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {

        UITableViewCell * cell = [self tableView:tableView cellForRowAtIndexPath:indexPath];
        CommentsListResponseDataModel * model = self.liveCommentData[indexPath.row -1];

        if (model.viewHeight > 0) {
            return model.viewHeight;
        } else {
            if (model.parentComment) {
                CommentParentCell * cc = (CommentParentCell *)cell;
                return cc.viewHeight;
            } else {
                CommentSingleCell * cc = (CommentSingleCell *)cell;
                return cc.viewHeight;
            }
        }
    }

}

但这将成为一个死循环,因为所有cellForRowAtIndexPath:indexPathcellForRowAtIndexPath:indexPath都会召回cellForHeightAtIndexPath:indexPath

2 个答案:

答案 0 :(得分:0)

您似乎想要与原始问题无关的内容 - 您希望自己的表格视图单元格自动调整大小,具体取决于内容。

您需要做的是:
1.为您的单元格添加约束 - 确保它没有高度约束,但其内容必须具有顶部和底部约束。
2.删除heightForRowAtIndexPath,因为没有必要 3.将表格视图行高设置为自动

tableView.rowHeight = UITableViewAutomaticDimension

现在只需设置您的单元格 - 将其内容调整为所需高度,表格单元格将自动调整大小

答案 1 :(得分:0)

据我所知,您正在尝试通过调用 UITableView数据源方法来获取单元格对象。但是当你尝试这样做时,它将是无限循环调用,你永远不会得到单元格对象。因此,为了从UITableView获取单元对象,请执行以下步骤。

  • 将您的UITableView声明为ViewController的全局视图,例如UITableView *_tableView;@IBOutlet weak UITableView *_tableView;

  • 然后尝试拨打

//specify the item indexpath
NSIndexPath *_indexPath = [NSIndexPath indexPathForItem:3 inSection:1];

//now try to access cell object by passing cell indexPath
UITableViewCell *_cell = [_tableView cellForRowAtIndexPath:_indexPath];