如何使用IB中的子类化细胞而不再重复使用?

时间:2013-07-24 10:06:35

标签: cocoa-touch uitableview interface-builder

我在IB中创建了一个包含2 UIButton个s的单元格并将其子类化。如何在不重复使用的情况下使用它? (用于小型固定桌子) 我尝试过这样的事情: RaffleResultCell *cell = [tableView dequeueReusableCellWithIdentifier:nil]; 但那不会在UITableView中显示我的单元格,只是一个空白单元格。

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
        //Where we configure the cell in each row
        id currentRaffle = [_winnings objectAtIndex:indexPath.row];
        RaffleResultCell *cell = [tableView dequeueReusableCellWithIdentifier:@"raffleResCell"];
        if (cell == nil) {
            cell = [[RaffleResultCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"raffleResCell"];
        }
return cell;
}

2 个答案:

答案 0 :(得分:0)

避免可重用性不是一个好习惯,我会说不要这样做

可重用性在此行中完成

RaffleResultCell *cell = [tableView dequeueReusableCellWithIdentifier:@"raffleResCell"];

删除该行,并且每次都调用alloc方法而不使用检查循环

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
       id currentRaffle = [_winnings objectAtIndex:indexPath.row];
       cell = [[RaffleResultCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"raffleResCell"];
       return cell;
}

答案 1 :(得分:0)

你告诉你在IB中设置UITableViewCell然后你需要获取Nib文件,然后将该文件用作

// Get nib file from mainBundle
NSArray* topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"RaffleResultCell" owner:self options:nil];

    for (id currentObject in topLevelObjects) {
        if ([currentObject isKindOfClass:[UITableViewCell class]]) {
            RaffleResultCell *cell = (RaffleResultCell *)currentObject;
            break;
        }
    }

现在为您的按钮设置任何文本并返回单元格