UIImage 未显示在 UITableViewCell 中

Posted

技术标签:

【中文标题】UIImage 未显示在 UITableViewCell 中【英文标题】:UIImage not showing in UITableViewCell 【发布时间】:2019-05-12 18:16:10 【问题描述】:

我已将一些 UIImage 添加到我的 ios 应用程序中,并希望在我的自定义 UITableViewCell 中显示它们。根据所选曲目的不同,会有不同的图像。所以在我的模型中,我创建了以下代码,它是一个 switch 语句。

class GrandPrix 
let grandPrix: String!
let firstDriver: String!
let secondDriver: String!
let thirdDriver: String!
var trackIconName = ""

init(grandPrix: String, firstDriver: String, secondDriver: String, thirdDriver: String)
    self.grandPrix = grandPrix
    self.firstDriver = firstDriver
    self.secondDriver = secondDriver
    self.thirdDriver = thirdDriver


func updateTrackicon(grandPrix: String) -> String 
    switch (grandPrix) 
    case "Australian GP":
        return "Australian"
    case "Bahrain GP":
        return "Bahrain"
    case "Chinese GP":
        return "Chinese"
    case "Azerbaijan GP":
        return "Azerbaijan"
    case "Spanish GP":
        return "Chinese"
    case "Monaco GP":
        return "Monaco"
    case "Canadian GP":
        return "Canadian"
    case "French GP":
        return "French"
    case "Austrian GP":
        return "Austrian"
    case "British GP":
        return "British"
    case "German GP":
        return "German"
    case "Hungarian GP":
        return "Hungarian"
    case "Belgian GP":
        return "Belgian"
    case "Italian GP":
        return "Italian"
    case "Singapore GP":
        return "Singapore"
    case "Russian GP":
        return "Russian"
    case "Japanese GP":
        return "Japanese"
    case "American GP":
        return "United States"
    case "Brazilian GP":
        return "Brazilian"
    case "Abu Dhabi GP":
        return "Abu Dhabi"
    default :
        return "no track"
    
   
 

现在,在我的 UITableViewClass 中,我包含了以下代码,这些代码将在单元格中显示 UIImage

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
 let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as! GrandPrixTableViewCell
    let race = self.grandPrix[indexPath.row]
    // Configure the cell...
    cell.grandPrix.text = race.grandPrix
    cell.firstPostion.text = race.firstDriver
    cell.secondPosition.text = race.secondDriver
    cell.thirdPostion.text = race.thirdDriver
    cell.trackImage.image = UIImage(named: race.updateTrackicon(grandPrix: race.grandPrix))

    return cell

我已经连接了单元格并检查了 UIImage 的大小是否在情节提要中 UIImage 的大小范围内。当我运行应用程序时,会出现文本,但不会出现图像。任何帮助将不胜感激。

下面是解释数组来源的代码。

import UIKit

class PredictorTableViewController: UITableViewController 

var predictorTrack = ""
var firstDriver = ""
var secondDriver = ""
var thirdDriver = ""

var grandPrix = [GrandPrix]()  didSet self.tableView.reloadData() 

想了想,尝试将cellForRowAt indexPath改成如下代码。

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
 let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as! GrandPrixTableViewCell
    let race = self.grandPrix[indexPath.row]
    // Configure the cell...
    cell.grandPrix.text = race.grandPrix
    cell.firstPostion.text = race.firstDriver
    cell.secondPosition.text = race.secondDriver
    cell.thirdPostion.text = race.thirdDriver
    race.trackIconName = race.updateTrackicon(grandPrix: race.grandPrix)
    cell.trackImage.image = UIImage(named: race.trackIconName)

    return cell

我以为这会显示 Track UIImage,但不幸的是,我仍然没有得到图像。

【问题讨论】:

在代码中,您已将grandPrix 声明为String,并且在let race = self.grandPrix[indexPath.row] 中将其用作Array。请解释一下。 另外,检查具有该特定名称的图像是否在Assets中可用 我已经检查了Assets中的图像并测试了其他人。 cell.trackImage.image = UIImage(named: race.updateTrackicon(grandPrix: race.grandPrix)) 替换为let image = UIImage(named: race.updateTrackicon(grandPrix: race.grandPrix)); cell.trackImage.image = image 并在第二条语句处设置断点。然后你可以检查图像是否存在。 如果图片为nil,可能是命名错误。用大小写再次检查名称 【参考方案1】:

这可能是命名错误。确认名称是否匹配。

【讨论】:

今晚晚些时候我会检查,因为我现在正在工作。这是一种爱好,因此无法在白天查看。

以上是关于UIImage 未显示在 UITableViewCell 中的主要内容,如果未能解决你的问题,请参考以下文章

使用 UIImage 或 Code 绘制高亮蓝色

调用“updateWeatherIcon(condition:)”的结果未使用,因此不会显示 UIImage

可选类型“UIImage?”的值未打开

如何解决图像未显示在模拟器或 iPhone for Xcode 中的问题

UIButton 的渐变未显示

UIImage 未根据 UIImageView 大小宽度和高度调整大小