web-dev-qa-db-ja.com

uitableviewセルに画像を追加

tableviewがありますが、このセルの左側に画像を追加するにはどうすればよいですか?

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

更新:スティーブン・フィッシャーが言ったように、これはデフォルトのスタイルであるスタイルUITableViewCellStyleDefaultのセルに対してのみ機能するはずです。他のスタイルの場合、UIImageViewをセルのcontentViewに追加する必要があります。

126
André Morujão

このコードを試してください:-

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には、画像が設定されている場合、すべてのラベルの左側に表示されるUIImageViewが既に含まれています。 imageViewプロパティを使用してアクセスできます。

cell.imageView.image = someImage;

何らかの理由で標準の動作がニーズに合わない場合(その標準の画像ビューのプロパティをカスタマイズできることに注意してください)、Amanが答えで示唆したように、独自のUIImageViewをセルに追加できます。ただし、そのアプローチでは、セルのレイアウトを自分で管理する必要があります(たとえば、セルラベルが画像と重ならないようにします)。そして、サブビューをセルに直接追加しないでください-セルのcontentViewに追加します:

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

私の仲間Swiftユーザーの場合、必要なコードは次のとおりです。

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

Swift 4ソリューション:

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

他からのすべての良い答え。これを解決する方法は2つあります。

  1. Imageviewのサイズをプログラムで制御する必要があるコードから直接

    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. ストーリーボードから、ユーティリティペインの属性インスペクターとサイズインスペクターを使用して、位置を調整し、制約を追加し、寸法を指定できます

    • ストーリーボードで、希望するサイズでimageViewオブジェクトをセルのコンテンツビューに追加し、属性インスペクターのview(imageView)にタグを追加します。次に、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