Самая большая проблема с TTTableViewCell заключается в том, что он работает совершенно иначе, чем стандартный UITableViewCell & UITableViewDelegate, поэтому вам придется забыть то, что вы знаете о UITableViewCell.
В двух словах, TTTableItem
классы являются контейнерами данных,классы TTTableItemCell
отвечают за отображение ячеек в таблице.
Например, класс TTTableMessageItem
содержит все данные о сообщении, такие как дата, заголовок и текст сообщения.Класс TTTableMessageItemCell
содержит все элементы пользовательского интерфейса для ячейки и их макет.
Я обнаружил, что он более гибкий, чем стандартный 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