Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Two different Cell Types in one UITableView

Hey everybody, I'm very confused about how to use two different Cell Types in one UITableView with two sections. The first section should return a large Cell, with a lot of text, the other section should return three cells, to navigate to other Views. I tried it like this:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    //NSUInteger section;
    static NSString *CellIdentifier1 = @"CellIdentifier";
    static NSString *CellIdentifier2 = @"Cell";

    if (indexPath.section == 0) {

        CustomTableCell *cell = (CustomTableCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier1];
        if (cell == nil)
        {
            [[NSBundle mainBundle] loadNibNamed:@"CustomTableCell" owner:self options:nil];     cell = [self customTableCell];
            [self setCustomTableCell:nil];
        }
        return cell;
    }
    else if (indexPath.section == 1) {

            cTableViewCell *cell = (cTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier2];
            if (cell == nil)
            {
                [[NSBundle mainBundle] loadNibNamed:@"cTableViewCell" owner:self options:nil];
                cell = [[cTableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier2];
                [self setCustomTableCell:nil];
            }
            // Configure the cell...
            NSUInteger row = [indexPath row];
            cell.textLabel.text = [array objectAtIndex:row];
            return cell;            
        }
    return cell;
}

I set the height for the cells in the sections here:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSUInteger section;
    if (section == 0) {
        return [indexPath row] + 80;
    }
    else 
    {
        return [indexPath row] + 44;
    }

}

I get this Error: 'cell' undeclared (first use this function). :( I really hope that you could help me. Thanks in advance

like image 714
mstottrop Avatar asked Aug 17 '26 05:08

mstottrop


1 Answers

At the end of tableView:cellForRowAtIndexPath:, make it return nil; instead of return cell;.

like image 198
Deepak Danduprolu Avatar answered Aug 19 '26 14:08

Deepak Danduprolu



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!