有可能在一个xib中创build多个单元格吗?

我发现它可以用不同的xib创build不同的单元格,但是我想知道是否可以在一个xib中创build不同的单元格? 如果可能,我该怎么做?

这里

这里是代码,我知道这是错误的代码,所以你们可以帮我解决它吗?

- (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; } } 

我的第一个想法是不这样做。 但是如果我必须这么做的话,我想我会尝试使用旧式出列来构build单元格,并且通过从nib手动提取它们来构build可重用单元的初始池。

所以,不要做任何细胞笔尖或细胞类的注册,然后在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;