UIImage未按预期显示

时间:2015-06-06 10:54:27

标签: ios objective-c uitableview uiimageview uiimage

- (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

我做错了什么?

1 个答案:

答案 0 :(得分:0)

您没有更改UITableViewCell的高度。

我认为更好的方法是在UIImageView / xib设计中加入storyboard。假设您有某种dto对象存储单元格中显示的数据,您可以在其上保留boolean,指示是否应显示图像。

  • didSelectRowAtIndexPath上,您将更新boolean,并执行[tableView reloadData]
  • cellForRowAtIndexPath中,您将根据UIImageView隐藏/显示boolean
  • heightForRowAtIndexPath中,您将再次检查布尔值,以便相应地更新高度。

希望它有所帮助。