2011-02-15 56 views
3

我正在使用TTListDataSource来填充TTTableViewController。Three20框架,如何更改默认行高TTTableView?

这是我使用的填充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; 

回答

4

如果你在你的表格单元格类使用variableHeightRows那么你需要实现:

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

要注意的是使用variableHeightRows将导致框架要经过你的整个数据源调用此方法来获得整体桌子的高度。如果你所有的行高度相同,那么在你的TTTableViewController子类loadView中,你应该设置tableView的rowHeight属性。

+0

Three20在我的TTTableViewCell子类中似乎没有认出这个方法,因为它甚至没有调用它。你知道什么可能是错的吗? – 2011-04-27 10:19:46

0

我在这里回答自己。

一种解决方案是覆盖TTTableViewController的initWithNibName方法如下:

- (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];} 
0

解我:

我刚搬到那些2线到viewDidLoad方法;这对我有效!

- (void)viewDidLoad 
{ 
    self.title = @"E-Mail"; 
    self.variableHeightRows = YES; 
}