How do you load custom UITableViewCells from Xib files?

前端 未结 23 1735
抹茶落季
抹茶落季 2020-11-22 11:11

The question is simple: How do you load custom UITableViewCell from Xib files? Doing so allows you to use Interface Builder to design your cells. The answer app

23条回答
  •  无人及你
    2020-11-22 11:21

    Here's the class method that I've been using for creating custom cells out of XIBs:

    + (CustomCell*) createNewCustomCellFromNib {
    
        NSArray* nibContents = [[NSBundle mainBundle]
                                loadNibNamed:@"CustomCell" owner:self options:NULL];
    
        NSEnumerator *nibEnumerator = [nibContents objectEnumerator];
        CustomCell *customCell= nil;
        NSObject* nibItem = nil;
    
        while ( (nibItem = [nibEnumerator nextObject]) != nil) {
    
            if ( [nibItem isKindOfClass: [CustomCell class]]) {
                customCell = (CustomCell*) nibItem;
    
                if ([customCell.reuseIdentifier isEqualToString: @"CustomCell"]) {
                    break; // we have a winner
                }
                else
                    fuelEntryCell = nil;
            }
        }
        return customCell;
    }
    

    Then, in the XIB, I set the class name, and reuse identifier. After that, I can just call that method in my view controller instead of the

    [[UITableViewCell] alloc] initWithFrame:]
    

    It's plenty fast enough, and being used in two of my shipping applications. It's more reliable than calling [nib objectAtIndex:0], and in my mind at least, more reliable than Stephan Burlot's example because you're guaranteed to only grab a view out of a XIB that is the right type.

提交回复
热议问题