最近想弄個TabelView,然后發(fā)現(xiàn)傳統(tǒng)的創(chuàng)建cell的方法除了問題:
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellid forIndexPath:indexPath];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];}
在初始化tableview的時候我沒有使用registerClass和registerNib注冊cell,結(jié)果tableView沒有復(fù)用宁赤,每條數(shù)據(jù)都會創(chuàng)建一個cell翘贮,沒有達到復(fù)用的效果炉爆!因此:
若要使用UITableView的復(fù)用機制尿孔,就必須在初始化UITableView的時候就注冊Cell或Header/Footer并制定其Identifier欧瘪,注冊的方式分兩種:registerClass和registerNib沾凄,具體怎么用呢:
1.如果你的TableViewCell是只有代碼沒有xib:
[self.baseTableView registerClass:[UITableViewCell class]forCellReuseIdentifier:@"CellReuseIdentifier"];
2.如果TableViewCell是代碼加xib的話有以下兩種方式注冊:
(1)除了上面那句代碼焚廊,還需在Cell的.m文件中實現(xiàn):initWithStyle并自己加載Nib:
(NSString*)reuseIdentifier {
self=?[super initWithStyle:style reuseIdentifier:reuseIdentifier];
if(self)?{
NSArray*nibArray?=?[[NSBundle mainBundle]loadNibNamed:@"HomeTableViewCell"owner:niloptions:nil];
self=?[nibArray lastObject];
[self ?initCell];
}
returnself;
}
(2).直接使用registerNib進行注冊
[self.baseTableView registerNib:[UINib nibWithNibName:@"HomeTabelViewCell"bundle:nil] forCellReuseIdentifier:@"HomeTabelViewCell"];