2012-01-10 4 views
0

Я пытаюсь использовать PXListView, чтобы показать таблицу ячеек, содержащую NSTextField s, и я хочу изменить высоту каждой ячейки, чтобы исправить текст внутри нее.Переменная высота NSTextField с PXListView

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

- (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

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

- (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); 
} 
Смежные вопросы