4

我有一个带有 5 个静态单元格的表格视图。它们是静态的,因为 tableview 中总是只有 5 个。

自定义单元格

我想要它们自定义单元格,因为我需要在每个单元格中居中 UIImageViews,因为它们将有按钮图像,没有别的。我创建了一个带有 UIImageView 插座的 MyCustomCell 类并将其连接到插座。

单元格Xib

然后在 tableview 控制器类中我这样做了:

#pragma mark - TableView Cell Methods
- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    MyCustomCell *cell = [[MyCustomCell alloc] init];

    switch (indexPath.row) {
        case 0:
            // Use Custom Cell
            cell.thumbnailImageView.image = [UIImage imageNamed:@"button.png"];
            break;
        case 1:
            [cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];
            // USE IMAGE INSTEAD
            cell.thumbnailImageView.image = [UIImage imageNamed:@"button1.png"];
            break;
        case 2:
            cell.thumbnailImageView.image = [UIImage imageNamed:@"button2.png"];
            break;
        case 3:
            cell.thumbnailImageView.image = [UIImage imageNamed:@"button3.png"];
            break;
        case 4:
            cell.thumbnailImageView.image = [UIImage imageNamed:@"Search.png"];
            break;
        default:
            break;
    }
    return cell;
}

MyCustomCell.m:

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {

    }
    return self;
}

- (void)setSelected:(BOOL)selected animated:(BOOL)animated{
    [super setSelected:selected animated:animated];

    // Configure the view for the selected state
}

单元格显示为空白。当我使用 UITableViewCell 而不是 MyCustomCell 时,它运行良好。所以我不知道为什么它现在失败了。

4

2 回答 2

2

我看不到您在 .xib 中为您的自定义单元格引用 .xib 文件的任何地方MyCustomCell.m。您必须告诉类要加载哪个 .xib 文件。

查看以下教程,该教程演示了从 .xib 文件(在自定义单元格类中)加载单元格的一种方法:从 XIB 中创建自定义 UITableViewCell – 分步教程

这个问题显示了另一种方法(内cellForRowAtIndexPath): how to create custom tableViewCell from xib

此外,如果您在cellForRowAtIndexPath. 您将丢失在 Interface Builder 中设置的任何内容。考虑放弃静态单元格。您可以在设置图像的同一位置设置所有单元格属性。

最后,如果您确实放弃了静态单元格方法,请考虑在与表格视图相同的视图控制器中创建自定义单元格(标准UITableView为此目的有一个占位符单元格)并以标准方式使自定义单元格出列。然后,没有额外的 .xib 加载,所以它会被自动处理。有关创建这样的自定义表格视图单元格的更多详细信息,请参阅我以前的答案。

于 2013-07-26T17:28:16.263 回答
0

如果您使用的是静态单元格,只需为每个单元格创建 IBOutlets,然后执行以下操作:

- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
     MyCustomCell *cell = nil;

    switch (indexPath.row) {
         case 0:
             cell0.thumbnailImageView.image = [UIImage imageNamed:@"button.png"];
             cell = cell0;
             break;
          case 1:
             //you can set the accessory type in the storyboard
             [cell1 setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];
              cell1.thumbnailImageView.image = [UIImage imageNamed:@"button1.png"];
             cell = cell1;
            break;
           //etc
    }
    return cell;
}
于 2013-07-26T23:12:48.740 回答