TTTableViewController с пользовательским образцом ячейки - PullRequest
1 голос
/ 26 июня 2011

У меня проблемы с использованием TTTableViewController с пользовательской ячейкой?Чтобы использовать пользовательскую ячейку, могу ли я использовать UITableViewCell или мне нужно создать подкласс TTTableViewCell?Как мне использовать TTModel?Есть ли хорошие примеры, которые показывают все это?

1 Ответ

3 голосов
/ 27 июня 2011

Самая большая проблема с 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

...