web-dev-qa-db-fra.com

ajouter une image à la cellule uitableview

J'ai une tableview, comment puis-je ajouter une image à gauche de cette cellule?

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

UPDATE: Comme Steven Fisher l'a dit, cela ne devrait fonctionner que pour les cellules de style UITableViewCellStyleDefault, qui est le style par défaut. Pour les autres styles, vous devez ajouter un UIImageView à contentView de la cellule.

126
André Morujão

Essayez ce code: - 

UIImageView *imv = [[UIImageView alloc]initWithFrame:CGRectMake(3,2, 20, 25)];
imv.image=[UIImage imageNamed:@"arrow2.png"];
[cell addSubview:imv];
[imv release];
20
Aman Aggarwal

UITableViewCell standard contient déjà UIImageView qui apparaît à gauche de toutes vos étiquettes si son image est définie. Vous pouvez y accéder en utilisant la propriété imageView:

cell.imageView.image = someImage;

Si, pour une raison quelconque, le comportement standard ne répond pas à vos besoins (notez que vous pouvez personnaliser les propriétés de cette vue d'image standard), vous pouvez ajouter votre propre UIImageView à la cellule, comme suggéré par Aman dans sa réponse. Mais dans cette approche, vous devrez gérer vous-même la disposition des cellules (par exemple, assurez-vous que les étiquettes des cellules ne chevauchent pas les images). Et ne pas ajouter de sous-vues à la cellule directement - ajoutez-les à la fonction contentView de la cellule:

// DO NOT!
[cell addSubview:imv]; 
// DO:
[cell.contentView addSubview:imv];
13
Vladimir

Pour les autres utilisateurs de Swift, voici le code dont vous aurez besoin:

let imageName = "un-child-rights.jpg"
let image = UIImage(named: imageName)
cell.imageView!.image = image
6
Keith Holliday

Swift 4 solution:

    cell.imageView?.image = UIImage(named: "yourImageName")
0
Masih Sadri

Toutes les bonnes réponses des autres. Voici deux façons de résoudre ce problème:

  1. Directement à partir du code où vous devrez contrôler par programme les dimensions de la vue image

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "xyz", for: indexPath)
        ...
        cell.imageView!.image = UIImage(named: "xyz") // if retrieving the image from the assets folder 
        return cell
    }
    
  2. À partir du story-board, vous pouvez utiliser l'inspecteur d'attributs et l'inspecteur de taille du volet Utilitaires pour ajuster le positionnement, ajouter des contraintes et spécifier des dimensions. 

    • Dans le storyboard, ajoutez un objet imageView dans la vue de contenu de la cellule avec les dimensions souhaitées, puis ajoutez une balise à la vue (imageView) dans l'inspecteur d'attributs. Puis procédez comme suit dans votre viewController

      override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
          let cell = tableView.dequeueReusableCell(withIdentifier: "xyz", for: indexPath)
          ...
          let pictureView = cell.viewWithTag(119) as! UIImageView //let's assume the tag is set to 119
          pictureView.image = UIImage(named: "xyz") // if retrieving the image from the assets folder 
          return cell
      }
      
0
vredrav