带有PXListView的可变高度NSTextField

时间:2012-01-10 08:23:47

标签: objective-c macos cocoa nstextfield

我正在尝试使用PXListView来显示包含NSTextField s的单元格表格,我想改变每个单元格的高度以修复其中的文本。

在我的子类化单元格视图中,我有一个计算单元格高度的高度方法:

- (CGFloat)height{
    NSRect textRect = [self.text.attributedStringValue
                       boundingRectWithSize:NSMakeSize(NSWidth(self.text.frame), 0.0f) 
                       options:NSStringDrawingUsesLineFragmentOrigin];
    return MAX(90.0f, NSHeight(textRect)+73.0f);
}

然后在我PXListViewDelegate的{​​{1}}方法中,我获取该行的单元格,然后获取该单元格的高度:

heightOfRow

问题是细胞总是- (CGFloat)listView:(PXListView *)listView heightOfRow:(NSUInteger)row{ CustomViewCell *cell = (CustomViewCell *)[listView cellForRowAtIndex:row]; return [cell height]; } ,我相信这是因为我有鸡或蛋的情景。单元格为空,因为从不调用null,因为高度为零,因此不需要加载单元格。

根据其中的文字改变cellForRow单元格高度的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

我的解决方案是使用表格视图的宽度来计算每个表格单元格的高度:

- (CGFloat)listView:(PXListView *)listView heightOfRow:(NSUInteger)row{
    NSRect textRect = [self.text.attributedStringValue
                       boundingRectWithSize:NSMakeSize(NSWidth(self.tableView.frame), 0.0f) 
                       options:NSStringDrawingUsesLineFragmentOrigin];
    return MAX(90.0f, NSHeight(textRect)+73.0f);
}