На основании этого ответа View-based NSTableView with rows that have dynamic heights:
В делегате ваша NSTableView
:
@interface MenuDelegate()
@property (nonatomic, weak) NSArrayController * theArrayController ;
@property (nonatomic, strong) NSTextFieldCell * anExtraTextFieldCell ;
@property (nonatomic) NSRect tallRect ;
@end
@implementation MenuDelegate
#pragma mark - Initialisations
- (id)initwithArrayController:(NSArrayController *)theArrayController;
{
self = [super init] ;
if (self)
{
self.theArrayController = theArrayController ;
self.anExtraTextFieldCell = [[NSTextFieldCell alloc] init] ;
}
return self ;
}
- (CGFloat) tableView:(NSTableView *)tableView
heightOfRow:(NSInteger)row {
if (!self.tallRect.size.width)
{
NSTableColumn * firstColum = tableView.tableColumns[0] ;
self.tallRect = NSMakeRect(0, 0, firstColum.width, CGFLOAT_MAX);
}
// Access the content of the cell.
NSString * content = [self.theArrayController.arrangedObjects[row] valueForKey:@"title"] ;
self.anExtraTextFieldCell.stringValue = content ;
CGFloat result = [self.anExtraTextFieldCell cellSizeForBounds:self.tallRect].height + 5;
if (result < [tableView rowHeight])
{
result = [tableView rowHeight] ;
}
return result ;
}
Можете ли вы быть более конкретной информацией о проблеме у вас? Если вы используете NSTableView, основанный на представлении, вы можете создать NSTableCellViews с произвольными аранжировками любых подзонов, которые вам нравятся в Interface Builder, очень похожим на то, что вы можете сделать на iOS. Это включает многострочные текстовые поля или несколько текстовых полей одной строки, расположенных в строках. –
Я хотел избежать боли, чтобы использовать табличные представления, основанные на представлении ... – Colas
Представления таблиц, основанные на просмотре, намного удобнее настраивать, чем виды табличных таблиц. Вы не избегаете боли, используя табличный вид на ячейке ... –