码迷,mamicode.com
首页 > 其他好文 > 详细

UITableView的cell重用优化

时间:2015-10-05 18:12:01      阅读:396      评论:0      收藏:0      [点我收藏+]

标签:

三种情况,四种方法:

情况一:加载xib中描述的cell

情况二:加载纯代码自定义的cell

情况三:加载storyBoard中的tableView内的cell

 

针对于情况一:

// 导入自定义cell的.h文件,在viewDidLoad方法中注册xib中描述的cell,因为只需要注册一次,所以选择在viewDidLoad方法中注册
#import "WSUserCell.h"

- (void)viewDidLoad {

[self.tableView registerNib:[UINib nibWithNibName:NSStringFromClass([WSUserCell class]) bundle:nil] forCellReuseIdentifier:WSUserCellId];

}

针对于情况二:

// 方法一:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *ID = @"carID";
    UITableViewCell *carCell = [tableView dequeueReusableCellWithIdentifier:ID];
    if (carCell == nil) {
        carCell =[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];
    }

    WSCarGroups *carGroup = self.arrayModel[indexPath.section];
    WSCars *car = carGroup.cars[indexPath.row];
    
    carCell.textLabel.text = car.carName;
    carCell.imageView.image = [UIImage imageNamed:car.carIcon];
    
    return carCell;
}
// 方法二:

- (void)viewDidLoad {
// 注册 
[self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:ID];

}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *ID = @"carID";
    UITableViewCell *carCell = [tableView dequeueReusableCellWithIdentifier:ID];
// 因为已经注册过这个cell类,所以就不用写这句代码
// if (carCell == nil) { // carCell =[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID]; // } WSCarGroups *carGroup = self.arrayModel[indexPath.section]; WSCars *car = carGroup.cars[indexPath.row]; carCell.textLabel.text = car.carName; carCell.imageView.image = [UIImage imageNamed:car.carIcon]; return carCell; }

 针对于情况三:

即不需要注册,也不需要在- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath中判断cell是否为空,系统会自动加载storyBoard中指定reuseIdentifier的cell

- (void)viewDidLoad {
    [super viewDidLoad];
    
    self.tableView.rowHeight = 70;
    // 不需要注册
//    [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"tg"];
}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (indexPath.row % 2 == 0) {
        static NSString *ID = @"tg";
        XMGTgCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
        
        cell.tg = self.tgs[indexPath.row];
        
        return cell;
    } else {
        return [tableView dequeueReusableCellWithIdentifier:@"test"];
    }
}

如下图,为storyBoard中给cell绑定的reuseIdentifier:

技术分享

 

UITableView的cell重用优化

标签:

原文地址:http://www.cnblogs.com/wsnb/p/4789808.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!