将 UIImageView 添加到 UITableViewCell?

Posted

技术标签:

【中文标题】将 UIImageView 添加到 UITableViewCell?【英文标题】:Adding UIImageView to UITableViewCell? 【发布时间】:2012-05-12 18:08:38 【问题描述】:

我在将 UIImageView 添加到单个 UITableView 单元格时遇到了真正的麻烦。在我的故事板中,我有一个 UITableViewController 和四个原型动态单元格。其中三个与正常的左侧细节单元格一样好,并且工作正常。但是其中一个我需要有一个 UIImageView。

所以我已将所述视图添加到单元格中,为单元格提供了一个具有属性的自定义类,以便我可以访问图像视图。

我有以下单元格:

标题单元格。 图像单元格。 网址单元格。 笔记单元格。

表格视图的内容会根据用户是否要添加 URL、注释或图像而改变。所以用户总是看到标题单元格与其他单元格之一。

这是我的代码,无论出于何种原因,我都无法让 UIImageView 显示在该图像单元格上。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 


    static NSString *CellIdentifier = @"Cell";

    //0 = Image
    if ([[NSUserDefaults standardUserDefaults] integerForKey:@"NewScrapbookEntry"] == 0) 
    
        if (indexPath.row == 0) CellIdentifier = @"titleCell";
        if (indexPath.row == 1) CellIdentifier = @"imageCell";
        if (indexPath.row == 2) CellIdentifier = @"notesCell";
    
    //1 = URL
    else if ([[NSUserDefaults standardUserDefaults] integerForKey:@"NewScrapbookEntry"] == 1) 
    
        if (indexPath.row == 0) CellIdentifier = @"titleCell";
        if (indexPath.row == 1) CellIdentifier = @"urlCell";
        if (indexPath.row == 2) CellIdentifier = @"notesCell";
    
    //2 = Notes
    else if ([[NSUserDefaults standardUserDefaults] integerForKey:@"NewScrapbookEntry"] == 2) 
    
        if (indexPath.row == 0) CellIdentifier = @"titleCell";
        if (indexPath.row == 1) CellIdentifier = @"notesCell";
    

    ScrapbookImageDetailCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) 
    
        cell = [[ScrapbookImageDetailCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:CellIdentifier];
        cell.editingAccessoryType = UITableViewCellAccessoryDisclosureIndicator;
    

    [cell setBackgroundColor:[UIColor colorWithRed:250.0f/255.0f green:250.0f/255.0f blue:250.0f/255.0f alpha:1.0f]];
    [cell setSelectionStyle:UITableViewCellSelectionStyleGray];

    cell.textLabel.adjustsFontSizeToFitWidth = YES;

    cell.textLabel.text = [firstSection objectAtIndex:indexPath.row];
    cell.detailTextLabel.font = [UIFont fontWithName:@"HelveticaNeue" size:13.0f];
    cell.detailTextLabel.numberOfLines = 0;
    cell.accessoryView = nil;

    switch (indexPath.section) 
    
        case 0:
            switch (indexPath.row) 
        
            case 0: 
                            
                cell.detailTextLabel.text = scrapbook.title;
             
                break;

            case 1: 
            
                //0 = Image
                if ([[NSUserDefaults standardUserDefaults] integerForKey:@"NewScrapbookEntry"] == 0) 
                
                    cell.detailTextLabel.text = nil;
                    cell.iv.image = [UIImage imageNamed:@"image.png"];
                
                //1 = URL
                else if ([[NSUserDefaults standardUserDefaults] integerForKey:@"NewScrapbookEntry"] == 1) 
                
                    cell.detailTextLabel.text = scrapbook.url;
                
                //2 = Notes
                else if ([[NSUserDefaults standardUserDefaults] integerForKey:@"NewScrapbookEntry"] == 2) 
                
                    cell.detailTextLabel.text = scrapbook.notes;
                
             
            break;

            case 2:
            
                cell.detailTextLabel.text = scrapbook.notes;
            
            break;

            default:
                break;
        
        break;

        default:
            break;
    

    return cell;

【问题讨论】:

【参考方案1】:

为什么要更改标识符值?您只需制作自定义单元格,并在行的高度中,检查它是否是您想要的行,并返回图像的高度,否则为默认大小,在单元格中为行方法,再次检查所需的行并添加图像你想添加其他使 imageview 为零。

【讨论】:

我明白你的意思,但我使用不同单元格标识符的原因是因为我的故事板中有自定义单元格,所以如果在某个 indexPath 上使用了某个标识符,那么该单元格从我的故事板中使用。基本上它可以让我更轻松地在视觉上制作我的自定义单元格。

以上是关于将 UIImageView 添加到 UITableViewCell?的主要内容,如果未能解决你的问题,请参考以下文章

从数组向 UITable 添加行

UIImage 仅在 UIImageView 中返回 nil

将 UITable 单元连接到不同的故事板?

将子视图添加到 UITable

UITable 视图界面构建器创建

可滚动且与 UITable 滚动同步的背景图像