Переменная высота NSTextField с PXListView - PullRequest
0 голосов
/ 10 января 2012

Я пытаюсь использовать 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 heightOfRow я получаю ячейку для строки, затем получаю высоту этой ячейки:

- (CGFloat)listView:(PXListView *)listView heightOfRow:(NSUInteger)row{
    CustomViewCell *cell = (CustomViewCell *)[listView cellForRowAtIndex:row];
    return [cell height];
}

Проблема в том, что ячейка всегда null, я думаю, это потому, что у меня сценарий с курицей или яйцом.Ячейка пуста, потому что cellForRow никогда не вызывается, потому что высота равна нулю, поэтому нет необходимости загружать ячейку.

Как правильно изменить высоту ячейки PXListView на основе текста внутриэто?

1 Ответ

1 голос
/ 15 февраля 2012

Мое решение состояло в том, чтобы использовать ширину табличного представления для вычисления высоты каждой ячейки таблицы:

- (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);
}
...