Addview 图像未显示在表格单元格中

Posted

技术标签:

【中文标题】Addview 图像未显示在表格单元格中【英文标题】:Addview image not displaying in table cell 【发布时间】:2015-01-13 19:57:27 【问题描述】:

我使用 addsubview 修改了一个子视图表格单元格以在右侧包含一个附加图像(除了左侧的那个)。在我在顶部添加了一个搜索栏之前,我让它工作得很好。不知何故,正确的图像停止显示。我尝试删除搜索栏,但无法显示图像。我有一种感觉,我无意中打错了字,或者以某种方式弄乱了代码。

方法如下。除了右侧的图像不再显示之外,它可以正常工作。如果有人能发现我的错误或提出问题所在,将不胜感激。

   - (UITableViewCell *)tableView:(UITableView *)tableView
         cellForRowAtIndexPath:(NSIndexPath *)indexPath 
    static NSString *protoCell = @"Cell";
    UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:protoCell];
    if (cell == nil) 
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:protoCell];
    
   //     IDModel * item;
    IDModel * item = nil;

//  if no search
    //item  = [self.tableItems objectAtIndex:indexPath.row];
    //following for search

    if (tableView == self.searchDisplayController.searchResultsTableView) 
        item = [searchResults objectAtIndex:indexPath.row];
     else 
        item = [self.tableItems objectAtIndex:indexPath.row];
    

    // Configure the cell...
    cell.textLabel.text = item.name;
    cell.detailTextLabel.text = item.sub;

    cell.imageView.image = [UIImage imageNamed:item.pic];
    //following crops and rounds image
    //add image to right
    UIImageView *rightimage;
    rightimage = [[UIImageView alloc] initWithFrame:CGRectMake(225.0,0.0,80.0,45.0)];
    rightimage.autoresizingMask=UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleHeight;
//    rightimage.image = [UIImage imageNamed:@"pic.jpg"];

    [cell.contentView addSubview:rightimage];
       rightimage.image = [UIImage imageNamed:item.pic];

    return cell;

提前感谢您的任何建议。

【问题讨论】:

【参考方案1】:

这里的一个问题是您不应该从视图控制器向 UITableViewCell 添加视图。表视图单元格被重复使用,因此每次重复使用此单元格时,您都将为其添加一个新视图,而无需先删除旧视图。

相反,创建一个 UITableViewCell 子类,并在 -initWithStyle:reuseIdentifier: 方法中添加 rightimage(我会将其重命名为 rightImageView 以符合 Apple 的命名约定)。然后在-layoutSubviews方法中设置rightView的frame,或者在创建rightImageView后在-initWithStyle:reuseIdentifier:中设置自动布局约束。

将 rightImageView 设为公共属性(将其放在 .h 文件中),以便您可以从视图控制器分配图像。

【讨论】:

您会放弃情节提要中的子视图并将整个单元格作为自定义单元格吗? 是的,我更喜欢完整的自定义单元格。

以上是关于Addview 图像未显示在表格单元格中的主要内容,如果未能解决你的问题,请参考以下文章

在表格视图单元格中以编程方式显示图像

在 ios 的表格视图单元格中显示图像

图像未显示在集合视图单元格中

图像未加载到单元格 - IOS

在表格视图单元格中显示活动指示器

PFImageView 问题:无法在表格视图单元格中显示来自 Parse 的图像