代码之家  ›  专栏  ›  技术社区  ›  AltBrian

UITableViewCell中未显示UIImage

  •  0
  • AltBrian  · 技术社区  · 5 年前

    我在iOS应用程序中添加了一些UIImage,并希望在自定义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
    }
    

    我已经连接了单元格,并检查了UIImages的大小是否在故事板中UIImages的大小之内。当我运行应用程序的文本显示,但不是图像。任何帮助都将不胜感激。

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

    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
    }
    

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

    0 回复  |  直到 5 年前
        1
  •  1
  •   Sujan    5 年前

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