Three20 Framework, как изменить высоту строки по умолчанию TTTableView? - PullRequest
3 голосов
/ 15 февраля 2011

Я использую TTListDataSource для заполнения TTTableViewController.

Этот код я использую для заполнения массива элементов TTListDatSource:

NSString *text = [NSString stringWithFormat:@"<b>%@</b><br/>%@", someObject.title, someObject.text];
TTStyledText *styledText = [TTStyledText textFromXHTML:text lineBreaks:YES URLs:YES];
[items addObject:[TTTableStyledTextItem itemWithText:styledText]];

Я хотел бы изменить строку по умолчаниювысота, которую использует TTTableView, в настоящее время высота 2 строки.

есть идеи, как мне это сделать?

Я пытался использовать эти свойства в нескольких частях моего кода, но безуспешно:

TTTableViewController.variableHeightRows = YES; 
TTStyledText.setNeedsLayout;
TTStyledText sizeToFit;

Ответы [ 3 ]

4 голосов
/ 01 апреля 2011

Если вы используете variableHeightRows, то в ваших классах ячеек таблицы вам необходимо реализовать:

+ (CGFloat)tableView:(UITableView*)tableView rowHeightForObject:(id)object;

Остерегайтесь того, что использование variableHeightRows приведет к тому, что каркас пройдет весь ваш источник данных, вызывая этот метод, чтобы получить общийвысота стола.Если все ваши строки имеют одинаковую высоту, то в вашем подклассе TTTableViewController в loadView вы должны установить свойство rowHeight tableView.

0 голосов
/ 19 августа 2011

Решение для меня:

Я только что переместил эти две строки в метод viewDidLoad;это сработало для меня!

- (void)viewDidLoad
{
    self.title = @"E-Mail";
    self.variableHeightRows = YES;
}
0 голосов
/ 21 февраля 2011

Я отвечаю себе здесь.

Одним из решений является переопределение метода initWithNibName в TTTableViewController следующим образом:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
    self.variableHeightRows = YES;

}
return self;

}

Второй подход заключается в использовании TTTableViewDragRefreshDelegate в качестве делегата вашего TTableViewController. Этот делегат устанавливает variableHeightRows как true.

- (id<UITableViewDelegate>)createDelegate {
return [[[TTTableViewDragRefreshDelegate alloc] initWithController:self] autorelease];}
...