在默认的UITableViewCell中显示一个imageView

时间:2018-09-16 12:14:44

标签: ios swift uitableview

创建新的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 :(得分:3)

您应该让一个单元出队,而不是每次都分配一个新单元:

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中添加测试图像,以验证问题是否出在Practices数组中。

答案 1 :(得分:1)

  

是在单元格中实际显示图像的唯一方法是创建一个   服装细胞?

不,那不是真的。您也可以按照以下步骤进行设置:

function Code(){
    var spreadsheet = SpreadsheetApp.openById("<spreadsheet_id>")
    var form = FormApp.openById("<form_id>")
}

在您的代码中

public static void Main(string[] args)
{
    Console.WriteLine("string");

    var threads = new Thread[5];
    for (int i = 0; i < threads.Length; ++i)
    {
        threads[i] = new Thread(() => {
            Thread.Sleep(1000);
            Console.WriteLine("smth");
        }) { IsBackground = true };
        threads[i].Start();
    }
}

请检查cell.imageView?.image = some UIImage 实际有一个cell.imageView?.image = practices[indexPath.row].logo

也可以使用practices[indexPath.row].logo

UIImage

代替每次在dequeueReusableCell中分配它

答案 2 :(得分:0)

请检查:

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
}