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

时间:2015-01-13 19:57:27

标签: ios addsubview

我使用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 个答案:

答案 0 :(得分:0)

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

相反,创建一个UITableViewCell子类,并在-initWithStyle:reuseIdentifier:方法中添加rightimage(我将重命名rightImageView以与Apple的命名约定一致)。然后在-layoutSubviews方法中设置rightView的框架,或者在创建rightImageView之后立即在-initWithStyle:reuseIdentifier中设置自动布局约束。

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