如何使用多个可重用的TableViewCells

时间:2013-10-06 15:09:50

标签: ios uitableview

我想将多个可重用的UITableViewCells添加到TableView中。我正在使用此代码执行此操作,但它不起作用,它只显示第一个单元格。

这是我的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (indexPath.row == 0) {

        static NSString *costumeCell1 = @"Cell1";

        AppDetailCell1 *cell1 = [tableView dequeueReusableCellWithIdentifier:costumeCell1];

        if (!cell1) {
            cell1 = [[AppDetailCell1 alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:costumeCell1];
        }

        return cell1;
    }
    if (indexPath.row == 1) {

        static NSString *costumeCell2 = @"Cell2";

        AppDetailCell2 *cell2 = [tableView dequeueReusableCellWithIdentifier:costumeCell2];

        if (!cell2) {
            cell2 = [[AppDetailCell2 alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:costumeCell2];
        }

        return cell2;
    } else {

        return nil;

    }
}

1 个答案:

答案 0 :(得分:0)

如果您正确设置了重用标识符,则应更改此代码部分

  

AppDetailCell1 * cell1 = [tableView dequeueReusableCellWithIdentifier:costumeCell1];

    if (!cell1) {
        cell1 = [[AppDetailCell1 alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:costumeCell1];
    }

用这个

AppDetailCell1 *cell1 = [tableView dequeueReusableCellWithIdentifier:costumeCell1 forIndexPath:indexPath];

不需要if(!cell1),因为dequeueReusableCellWithIdentifier: forIndexPath:方法永远不会返回nil,正如我之前所说的,正确重用标识符集非常重要。