带有自定义单元格样本的TTTableViewController

时间:2011-06-26 03:18:27

标签: iphone three20

我在使用TTTableViewController和自定义单元格时遇到了困难?为了使用自定义单元格,我可以使用UITableViewCell还是必须子类化TTTableViewCell?我如何使用TTModel?有什么好的例子可以显示所有这些吗?

1 个答案:

答案 0 :(得分: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