1

cell.imageView 在第一次加载时正确显示。在 UITableViewCell 移出屏幕并重新打开后,突然 cell.imageView 的大小已更改为填充单元格的高度。当单元格设置为突出显示状态时也是如此。cell.imageView 在界面生成器中创建。

 (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"CustomCell";
    CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }
    NSDictionary *dataType = [self.dataTypes objectAtIndex:indexPath.row];
    [cell.imageView setImageWithURL:[NSURL URLWithString:[dataType valueForKey:@"imageURL"]]
                   placeholderImage:nil];

    cell.titleLabel.text = [data valueForKey:@"name"];
    cell.descriptionLabel.text = [data valueForKey:@"info"];

    return cell;
}
4

2 回答 2

0

尝试以下答案并对其进行必要的更改

https://stackoverflow.com/a/15331306/1713478

在这个答案中添加

cell.titleLabel.text = [data valueForKey:@"name"];
cell.descriptionLabel.text = [data valueForKey:@"info"];

只需使用CustomCell更改SimpleTableCell并在imageURL中输入您的图像 URL

并进行其他必要的更改。

可能你的问题会解决。

于 2013-04-10T05:49:05.337 回答
0

受到 Pratik 回答的启发,我决定从界面构建器中删除 UIImageView 并动态创建它。这可以按预期工作,但我不确定为什么会有所不同。可能与 IB 约束有关。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"CustomCell";
    CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }
    NSDictionary *data = [self.dataTypes objectAtIndex:indexPath.row];

    UIImageView *thumb = [[UIImageView alloc]initWithFrame:CGRectMake(11, 10, 52, 74)];
    [thumb setImageWithURL:[NSURL URLWithString:[data valueForKey:@"imageURL"]]
                   placeholderImage:nil];
    [cell addSubview:thumb];
    [thumb release];

    cell.titleLabel.text = [data valueForKey:@"name"];
    cell.descriptionLabel.text = [data valueForKey:@"info"];

    return cell;
}
于 2013-04-10T09:17:54.947 回答