2011-06-26 11 views
1

カスタムセルでTTTableViewControllerを使用する際に問題がありますか?カスタムセルを使用するには、UITableViewCellを使用するか、TTTableViewCellをサブクラス化する必要がありますか? TTModelの使い方このすべてを示す良い例がありますか?TTTableViewController with custom cell sample

答えて

3

TTTableViewCellの最大の問題は、標準のUITableViewCell & UITableViewDelegateとはまったく異なる点です。そのため、UITableViewCellについて知っていることを忘れてしまいます。

nutshellでは、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

関連する問題