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 图像未显示在表格单元格中的主要内容,如果未能解决你的问题,请参考以下文章