UITmageView在UITableViewCell中

时间:2011-12-01 06:31:34

标签: objective-c cocoa-touch uitableview uiimageview

我正在尝试在UITableViewCell中显示UIImageView。

内部方法- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath我有:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }


    CGSize cellSize = cell.frame.size;
    CGFloat cellWidth = cellSize.width;
    CGFloat cellHeight = cellSize.height;

    CGRect imageFrame = CGRectMake(0, 0, 70, cellHeight);
    UIImageView * image = [[UIImageView alloc] initWithFrame:imageFrame];
    [image setImage:[UIImage imageWithContentsOfFile:@"cyan.jpg"]];

    CGRect nameFrame = CGRectMake(80, 0, cellWidth-80, cellHeight/2);
    UILabel * nameLabel = [[UILabel alloc] initWithFrame:nameFrame];
    nameLabel.text = @"Name: John Doe";

    CGRect jobFrame = CGRectMake(80, 20, cellWidth-80, cellHeight/2);
    UILabel * jobLabel = [[UILabel alloc] initWithFrame:jobFrame];
    jobLabel.text = @"Job: IT-Consultant";

    [cell addSubview:image];
    [cell addSubview:nameLabel];
    [cell addSubview:jobLabel];

    return cell;
}

标签显示完美,但我看不到图像。

任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:6)

imageWithContentsOfFile:期望将路径发送给它。请改用imageNamed:,或首先使用NSBundle的pathForResource ...方法来获取路径。

此外,如果每个单元格的图像相同,则应在cell = nil块内添加图像视图,否则您将反复添加视图。

答案 1 :(得分:2)

将其添加到UITableViewCell contentView中。

[cell.contentView addSubview:...];

答案 2 :(得分:1)

使用UITableViewCell的imageView属性而不是你正在做的事情。为了更清楚,使用cell.imageView.image并将你的UIImage设置为。

或者如果您希望图像的位置更灵活,请将imageView添加到单元格的contentView中。即:[cell.contentView addSubview:yourImageView];