web-dev-qa-db-fra.com

Ajouter par programme une image à la cellule TableView

J'ai une UITableView qui obtient des informations d'un serveur et les publie dans une vue sous forme de tableau. À l'intérieur de chaque cellule se trouvent les informations du serveur. 

Aux fins de cet exemple, supposons que les informations que nous recevons du serveur sont des nombres: 1, 2, 3, 4.

Ce que je veux faire, c'est ajouter une image (par programme, car il y a des instructions if impliquées, etc.) à gauche de la cellule et le texte (1, 2, etc.) juste à côté. 

En gros, je veux que chaque cellule ressemble à ceci:

 _____________________________________
| (IMAGE) (TEXT)                      | --CELL 0
--------------------------------------
 _____________________________________
| (IMAGE) 2                           | --CELL 1
--------------------------------------

S'il vous plaît excuser mon illustration brute. :)

19
Baub

voici:

cell.imageView.image = [UIImage imageNamed:@"image.png"];

Rapide:

cell.imageView?.image = UIImage(named: "image.png")
20
TommyG

Vous pouvez ajouter l’image et le texte à UITableViewCell dans votre sous-classe UITableViewController de la manière suivante:

- (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] autorelease];
    }

    [[cell imageView] setImage:anImage];
    [[cell textLabel] setText:[NSString stringWithFormat:@"%d",[indexPath row]];

     return cell;
}

Vous pouvez tirer parti de quelques propriétés "intégrées" de UITableViewCell, telles que les propriétés imageView, textLabel et detailTextLabel. Pour plus d’informations, consultez le Guide de programmation Table View .

8
Christopher A

La version Swift 2.0 de la première réponse est:

cell.imageView?.image = UIImage(named: "image.png")
5
meh-uk

Les objets UITableViewCell ont une propriété imageView ; vous pouvez simplement définir l'image de cette image et celle-ci s'affichera automatiquement au bon endroit avec le titre à côté.

3
jtbandes
// create a rectangle box for image view

UIImageView *iconImage = [[UIImageView alloc] init];
iconImage.frame = CGRectMake(12,4,53.5,53.5);

// Create a label for cells
UILabel *cellName = [[UILabel alloc] initWithFrame:CGRectMake(75,18,200,20)];
cellName.font = [self fontForBodyTextStyle];

NSString *cellNameStr = [NSString stringWithFormat:@"%@",self.tableCellNames[indexPath.row]];

// Select path row tab actions
switch (indexPath.row) {
    case 0:

        cellName.text = cellNameStr;
        iconImage.image = [UIImage imageNamed:@"condition.png"];
        [cell.contentView addSubview:iconImage];
        [cell.contentView addSubview:cellName];

        break;

    case 1:
       cellName.text = cellNameStr;
        iconImage.image = [UIImage imageNamed:@"videos.png"];
        [cell.contentView addSubview:iconImage];
        [cell.contentView addSubview:cellName];
        break;

    case 2:
        cellName.text = cellNameStr;
        iconImage.image = [UIImage imageNamed:@"provider.png"];
        [cell.contentView addSubview:iconImage];
        [cell.contentView addSubview:cellName];
        break;

    case 3:
        cellName.text = cellNameStr;
        iconImage.image = [UIImage imageNamed:@"info.png"];
        [cell.contentView addSubview:iconImage];
        [cell.contentView addSubview:cellName];
        break;

    default:
        NSAssert(NO, @"Unhandled value in cellForRowAtIndexPath");
        break;
}
0
Vinod Joshi