2011-02-15 54 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; 
}