добавить изображение в ячейку uitableview - PullRequest
57 голосов
/ 03 мая 2011

У меня есть tableview, как я могу добавить изображение слева от этих ячеек?

Ответы [ 6 ]

126 голосов
/ 03 мая 2011
cell.imageView.image = [UIImage imageNamed:@"image.png"];

ОБНОВЛЕНИЕ: Как сказал Стивен Фишер, это должно работать только для ячеек со стилем UITableViewCellStyleDefault, который является стилем по умолчанию.Для других стилей вам нужно добавить UIImageView в contentView ячейки.

20 голосов
/ 03 мая 2011

Попробуйте этот код: -

UIImageView *imv = [[UIImageView alloc]initWithFrame:CGRectMake(3,2, 20, 25)];
imv.image=[UIImage imageNamed:@"arrow2.png"];
[cell addSubview:imv];
[imv release];
13 голосов
/ 03 мая 2011

Стандартный UITableViewCell уже содержит UIImageView, который отображается слева от всех ваших ярлыков, если его изображение установлено. Вы можете получить к нему доступ, используя свойство imageView:

cell.imageView.image = someImage;

Если по какой-то причине стандартное поведение не соответствует вашим потребностям (обратите внимание, что вы можете настроить свойства этого стандартного представления изображения), тогда вы можете добавить свой собственный UIImageView в ячейку, как предложил Аман в своем ответе. Но при таком подходе вам придется самостоятельно управлять макетом ячейки (например, убедитесь, что метки ячейки не перекрывают изображение). И не добавляйте подпредставления в ячейку напрямую - добавьте их в contentView ячейки:

// DO NOT!
[cell addSubview:imv]; 
// DO:
[cell.contentView addSubview:imv];
6 голосов
/ 12 октября 2015

Для моих пользователей Swift, вот код, который вам понадобится:

let imageName = "un-child-rights.jpg"
let image = UIImage(named: imageName)
cell.imageView!.image = image
1 голос
/ 16 ноября 2018

Swift 4 решение:

    cell.imageView?.image = UIImage(named: "yourImageName")
0 голосов
/ 28 апреля 2018

Все хорошие ответы от других.Вот два способа решить эту проблему:

  1. Непосредственно из кода, где вам придется программно управлять размерами изображения

    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в представлении содержимого ячейки с нужными размерами и добавьте тег к представлению (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
      }
      
...