- (void)showImageAtTableView:(UITableView *)tableView forRowAtIndexPath:(NSIndexPath *)indexPath
{
if ([tableView indexPathsForSelectedRows].count) {
if ([[tableView indexPathsForSelectedRows] indexOfObject:indexPath] != NSNotFound) {
//cell is expanded
CGFloat frameHeight = [[self.widthArray objectAtIndex:indexPath.row] floatValue];
CGFloat frameWidth = [[self.heightArray objectAtIndex:indexPath.row] floatValue];
//CGFloat yOrigin = [self configureHeightForRowAtIndexPath:indexPath];
CGRect imageFrame = CGRectMake(0,
12,
frameWidth,
frameHeight);
UIImageView *imageView = [[UIImageView alloc] initWithFrame:imageFrame];
imageView.image = [UIImage imageNamed:@"testImage.jpg"];
imageView.contentMode = UIViewContentModeCenter;
//configue which cell
UITableViewCell *cell = [self tableView:tableView cellForRowAtIndexPath:indexPath];
[cell.contentView addSubview:imageView];
}
}
}
上面的代码应该在点击时将UIImageView添加到现有的UITableViewCell。这是调用该方法的行(showImageAtTableView:forRowAtIndexPath):
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath: (NSIndexPath *)indexPath
{
[self updateTableView];
//get and show the image at selected cell
[self showImageAtTableView:tableView forRowAtIndexPath:indexPath];
}
但是这是在点击tableviewcell时的结果:
http://imgur.com/4NMJLf6,XweOgQu
我做错了什么?
答案 0 :(得分:0)
您没有更改UITableViewCell
的高度。
我认为更好的方法是在UIImageView
/ xib
设计中加入storyboard
。假设您有某种dto
对象存储单元格中显示的数据,您可以在其上保留boolean
,指示是否应显示图像。
didSelectRowAtIndexPath
上,您将更新boolean
,并执行[tableView reloadData]
。cellForRowAtIndexPath
中,您将根据UIImageView
隐藏/显示boolean
。heightForRowAtIndexPath
中,您将再次检查布尔值,以便相应地更新高度。希望它有所帮助。