我使用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;
}
提前感谢任何建议。
答案 0 :(得分:0)
这里的一个问题是您不应该从视图控制器向UITableViewCell添加视图。表格视图单元格被重复使用,因此每次重复使用此单元格时,您将在不先删除旧视图的情况下向其中添加新视图。
相反,创建一个UITableViewCell子类,并在-initWithStyle:reuseIdentifier:方法中添加rightimage(我将重命名rightImageView以与Apple的命名约定一致)。然后在-layoutSubviews方法中设置rightView的框架,或者在创建rightImageView之后立即在-initWithStyle:reuseIdentifier中设置自动布局约束。
将rightImageView设为公共属性(将其放在.h文件中),以便从视图控制器中分配图像。