Ios 如何使用自定义静态UITableViewCells在单元格中显示图像?

Ios 如何使用自定义静态UITableViewCells在单元格中显示图像?,ios,uitableview,Ios,Uitableview,我有一个带有5个静态单元格的tableview。它们是静态的,因为在tableview中始终只有5个 我希望它们是自定义单元格,因为我需要在每个单元格中居中显示UIImageView,因为它们将包含按钮图像而没有其他内容。我创建了一个带有UIImageView插座的MyCustomCell类,并将其连接到插座 然后在tableview控制器类中,我执行了以下操作: #pragma mark - TableView Cell Methods - (UITableViewCell*)tableV

我有一个带有5个静态单元格的tableview。它们是静态的,因为在tableview中始终只有5个

我希望它们是自定义单元格,因为我需要在每个单元格中居中显示UIImageView,因为它们将包含按钮图像而没有其他内容。我创建了一个带有UIImageView插座的MyCustomCell类,并将其连接到插座

然后在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时,它工作得很好。所以我不知道为什么它现在失败了

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

查看以下教程,其中演示了从.xib文件(在自定义单元类中)加载单元的一种方法:

此问题显示了另一种方法(在
cellforrowatinexpath
中):

另外,如果您在
cellforrowatinedexpath
中重新创建静态单元格,则不会真正使用静态单元格。您将丢失在Interface Builder中设置的所有内容。考虑放弃静态单元格。可以在设置图像的同一位置设置所有单元格属性


最后,如果您放弃静态单元方法,请考虑在与表视图相同的视图控制器中创建自定义单元(标准<>代码> UITable VIEW/CODEX>为此有一个占位符单元),并将自定义单元以标准方式排队。然后,不需要加载额外的.xib,因此将自动处理它。有关此类问题的更多详细信息,请参见我前面的答案。

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

- (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;
}

发布CustomCell.m init方法内容或LayoutSubview。此外,您应该通过出列来检查单元格是否存在,否则每次单元格滚动到屏幕外时都会分配新单元格(错误),但这些单元格是静态单元格。在自定义单元格类中没有对thumbnailImageView的引用,该imageView在何处设置(init、frame等)当您使用静态表视图时,不应该实现CellForRowatineXpath(或任何其他数据源方法)。只需将子视图直接添加到故事板中,并根据需要从控制器输出到单元或直接输出到子视图。这在Apple的表视图文档中有介绍。@rdelmar好的,但是如果我直接添加图像,如何处理可交换图像?也就是说,点击单元格后,如何处理将一个图像更改为另一个图像?好的,我已经创建了MyCustomCell类,添加了UIImageView插座并连接了它,使每个标识为MyCustomCell的静态单元格。但是我省略了cell=cell0步骤。我只是直接设定。你说的cell0是什么意思?