Как да задам височина на ред въз основа на съдържанието му в таблицата?

Като цяло таблицата има фиксирана височина на реда, но според моите изисквания трябва да задам височина на всеки ред според съдържанието в него.

Може ли някой да ми предложи някакво решение за това?

Благодаря,

Miraaj


person Devarshi    schedule 05.07.2010    source източник


Отговори (2)


Протоколът за делегиране на изглед на таблица има tableView:heightOfRow, който ви позволява да зададете височината на всеки ред в табличния изглед.

person dj2    schedule 05.07.2010
comment
благодаря за бързия ви отговор... можете ли да ми предложите дали има някакъв стандартен начин за изчисляване на височината на ред въз основа на съдържанието му или трябва да манипулирам някакво съотношение: въз основа на знаците в низа и ширината на реда.. - person Devarshi; 05.07.2010
comment
Един път, когато го правех, слушах известието NSViewFrameDidChangeNotification и когато се появи моят конкретен изглед, хванах неговия размер на рамката. Бих съхранил размера за клетката на реда и бих използвал метода noteHeightOfRowsWithIndexesChanged в таблицата, за да кажа на таблицата да се актуализира въз основа на тази промяна на височината на реда. Вероятно не е най-добрият начин да го направя, но трябваше да следя само за един изглед на webkit, който движех. Можете да видите кода, като използвате MacRuby вместо Obj-C, в github .com/dj2/Rife/blob/master/lib/application.rb - person dj2; 06.07.2010
comment
Miraaj: Можете да попитате всяка колона за нейната ширина и можете да попитате низ колко място би заел, ако бъде начертан в правоъгълник с даден размер (напр. такъв с ширината на колоната и много голяма височина). developer.apple.com/mac/library/documentation/Cocoa/Reference/: За изображение ще трябва да направите сами математиката, като използвате пропорцията на размер на изображението. - person Peter Hosey; 06.07.2010

Благодаря на всички за вашите предложения и помощ. Този проблем вече е разрешен с помощта на следния код в tableView:heightOfRow:

float colWidth = [[[tableView tableColumns] objectAtIndex:1]width];

NSString *content = [[[tempArray objectAtIndex:row] objectForKey:@"tValue"] string];

float textWidth = [content sizeWithAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[NSFont fontWithName:@"Lucida Grande" size:15],NSFontAttributeName ,nil]].width;

float newHeight = ceil(textWidth/colWidth);

newHeight = (newHeight * 17) + 13;
if(newHeight < 47){
    return 47;
}   
return newHeight;
person Devarshi    schedule 14.07.2010