Отображение imageView в UITableViewCell по умолчанию - PullRequest
0 голосов
/ 16 сентября 2018

Когда я создаю новый UITableView, я могу настроить cell.imageView. Разве это теоретически не должно показывать изображение? Является ли единственный способ на самом деле показать изображение внутри UITableViewCell для создания собственного подкласса ячейки?

Это код, который я использую:

public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
    {
        let cell = UITableViewCell (style: UITableViewCellStyle.value1, reuseIdentifier: "cell")
        cell.textLabel?.text = practices[indexPath.row].name
        cell.detailTextLabel?.text = practices[indexPath.row].address?.displayString()

//this doesn't show an image   
        cell.imageView?.clipsToBounds = true
        cell.imageView?.contentMode = .scaleAspectFill
        cell.imageView?.image = practices[indexPath.row].logo

        return (cell)
    }

Ответы [ 3 ]

0 голосов
/ 16 сентября 2018

Вы должны исключать ячейку из очереди вместо того, чтобы выделять новую каждый раз:

public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
    // Configure the cell
    cell.imageView?.image = practices[indexPath.row].logo
    return cell
}

Как предлагают другие, добавьте тестовое изображение в свои xcassets, чтобы убедиться, что проблема не в логотипе в массиве практиках.

0 голосов
/ 16 сентября 2018

пожалуйста, проверьте:

if practices[indexPath.row].logo is UIImage {
    print("My logo is not UIImage")
    cell.imageView?.image = nil
} else {
    print("My logo is UIImage")
    cell.imageView?.image = practices[indexPath.row].logo
}
0 голосов
/ 16 сентября 2018

- это единственный способ показать изображение в ячейке, это создать костюмная клетка?

Нет, это не правда. Вы можете установить его так же, как вы это сделали:

cell.imageView?.image = some UIImage

В вашем коде

cell.imageView?.image = practices[indexPath.row].logo

пожалуйста, проверьте practices[indexPath.row].logo на самом деле есть UIImage

Также примечание, используйте dequeueReusableCell

let cell = tableView.dequeueReusableCell(withIdentifier: "someCellName", for: indexPath)

вместо того, чтобы распределять его каждый раз в func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...