我发现它可以用不同的xib创建不同的单元格,但我想知道是否可以在一个xib中创建不同的单元格?如果可能的话,我该怎么办呢?
这是代码,我知道这是错误的代码,所以你们可以帮我解决一下吗?
- (void)viewDidLoad {
[super viewDidLoad];
[imageTableView registerNib:[UINib nibWithNibName:@"ImageTableViewCell" bundle:nil] forCellReuseIdentifier:@"oneImageTableViewCell"];
[imageTableView registerNib:[UINib nibWithNibName:@"ImageTableViewCell" bundle:nil] forCellReuseIdentifier:@"twoImageTableViewCell"];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
NSString *identifier1 = @"oneImageTableViewCell";
NSString *identifier2 = @"twoImageTableViewCell";
if (indexPath.row % 2 == 0) {
ImageTableViewCell *cell = [imageTableView dequeueReusableCellWithIdentifier:identifier1 forIndexPath:indexPath];
return cell;
} else {
ImageTableViewCell *cell = [imageTableView dequeueReusableCellWithIdentifier:identifier2 forIndexPath:indexPath];
return cell;
}
}
答案 0 :(得分:3)
我的第一个想法是不去做。但是,如果我必须这样做,我想我会尝试使用旧式出列来构建单元格,并通过从笔尖手动提取它们来构建可重用单元的初始池。
所以,不要进行任何细胞笔或细胞类注册,然后在cellForRowAtIndexPath中......
NSString *identifier;
NSInteger index;
if (indexPath.row % 2 == 0) {
identifier = @"oneImageTableViewCell";
index = 0;
} else {
identifier = @"twoImageTableViewCell";
index = 1;
}
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
if (!cell) {
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"ImageTableViewCell" owner:self options:nil];
cell = topLevelObjects[index];
}
return cell;