2011-06-26 88 views
1

我在使用TTTableViewController自定義單元格時遇到困難?爲了使用自定義單元格,我可以使用UITableViewCell還是必須繼承TTTableViewCell?我如何使用TTModel?有沒有什麼好的例子可以說明這一切?TTTableViewController與自定義單元格樣本

回答

3

TTTableViewCell最大的問題是它與標準的UITableViewCell & UITableViewDelegate完全不同,所以你將不得不忘記你對UITableViewCell的瞭解。

簡而言之,TTTableItem類是數據容器,而TTTableItemCell類負責顯示錶中的單元格。

例如,TTTableMessageItem類包含有關消息的所有數據,如日期,標題和正文。 TTTableMessageItemCell類包含單元格及其佈局的所有UI元素。

我發現它比標準UITableViewController更靈活,因爲您可以輕鬆更改單元格類型。

如果您想添加自己的自定義班級類型,則需要同時定義新的TTTableItem子類和新的TTTableItemCell子類。

HelloTableItem.h - 包含單元格的數據:

@interface HelloTableItem : TTTableLinkedItem { 
NSString *_title; 
NSString *_subtitle; 
} 

@property (nonatomic, copy) NSString *title; 
@property (nonatomic, copy) NSString *subtitle; 

+ (id)itemWithTitle:(NSString *)title 
     subtitle:(NSString *)subtitle; 

@end 

HelloTableItemCell.h - 細胞本身

@interface HelloTableItemCell : TTTableLinkedItemCell { 
    UILabel *_titleLabel; 
    UILabel *_subtitleLabel; 
} 

@end 

HelloTableViewDataSource.m - 數據源負責添加表格項目並決定爲每個項目類型使用哪種類型的單元格

- (id)init { 

if (self = [super init]) { 
    self.items = [NSArray arrayWithObjects: 
       [HelloTableItem itemWithTitle:@"First" subtitle:@"Hello #1!"], 
       [HelloTableItem itemWithTitle:@"Second" subtitle:@"Hello #2!"], 
       [HelloTableItem itemWithTitle:@"Third" subtitle:@"Hello #3!"], 
       [HelloTableItem itemWithTitle:@"Fourth" subtitle:@"Hello #4!"], 
       [HelloTableItem itemWithTitle:@"Fifth" subtitle:@"Hello #5!"], 
       nil]; 
} 

return self; 
} 

- (Class)tableView:(UITableView*)tableView cellClassForObject:(id) object { 

if ([object isKindOfClass:[HelloTableItem class]]) { 
    return [HelloTableItemCell class]; 
} 

return [super tableView:tableView cellClassForObject:object]; 
} 

@end 

完整的源代碼可以在這裏找到: http://three20.pypt.lt/custom-cells-in-tttableviewcontroller