无法在 TableCellView 中初始化 UIImage

Posted

技术标签:

【中文标题】无法在 TableCellView 中初始化 UIImage【英文标题】:Unable to initialise UIImage in TableCellView 【发布时间】:2018-05-18 10:53:03 【问题描述】:

我正在努力学习 Swift,所以这个问题可能有点愚蠢,请多多包涵。

我有一个函数可以初始化这样的属性-

private func loadSampleMeals()
    let photo1 = UIImage(named: "meal1")
    let photo2 = UIImage(named: "meal2")
    let photo3 = UIImage(named: "meal3")

    guard let meal1 = Meal(name: "meal1", photo: photo1, rating: 4) else 
        fatalError("Unable to initialize meal1")
    

    guard let meal2 = Meal(name: "meal2", photo: photo2, rating: 3) else
        fatalError("Unable to initialize meal2")
    

    guard let meal3 = Meal(name: "meal3", photo: photo3, rating: 1) else
        fatalError("Unable to initialize meal3")
    

    meals += [meal1, meal2, meal3]

然后我尝试将它们加载到表格单元格中-

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
    let cellIdentifier = "MealTableViewCell"

    guard let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as? MealTableViewCell else 
        fatalError("The dequeued cell is not an instance of MealTableViewCell.")
    

    let meal = meals[indexPath.row]

    cell.nameLabel.text = meal.name
    cell.photoImageView.image = meal.photo // <- error here
    cell.ratingControl.rating = meal.rating

    return cell

在上述代码中分配图像属性时出现以下错误-

[UITableViewCellContentView setImage:]: 无法识别的选择器发送到 实例 0x7fa19ed019a0 2018-05-18 14:12:28.845232+0530 FoodTracker[2440:67077] *** 由于未捕获的异常而终止应用程序 'NSInvalidArgumentException',原因:'-[UITableViewCellContentView setImage:]: 无法识别的选择器发送到实例 0x7fa19ed019a0'

我添加了图像,它们是 .jpg 格式,名称为 meal1meal2meal3。但不知道我做错了什么。有趣的是,我在助手中有另一张图片-defaultPhoto,如果我注释掉上面引发错误的行,我的代码运行正常,模拟器显示defaultPhoto 图像。

这是我的资产的样子-

请问有什么帮助吗?让我知道是否可以添加更多详细信息。

编辑:

我的网点看起来像这样-

class MealTableViewCell: UITableViewCell 
    //MARK: Properties
    @IBOutlet weak var nameLabel: UILabel!
    @IBOutlet weak var photoImageView: UIImageView!
    @IBOutlet weak var ratingControl: RatingControl!

    override func awakeFromNib() 
        super.awakeFromNib()
        // Initialization code
    

    override func setSelected(_ selected: Bool, animated: Bool) 
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
    

问题出在photoImageView。其他两个网点工作正常。

【问题讨论】:

显示MealTableViewCell 确保 photoImageView 是 UIImageView IBOutlet.. @Sweeper 谢谢。请检查我编辑的帖子。 【参考方案1】:

请检查您的 IBOutlet 是否已与您的 Cell 绑定 UIImageView。

【讨论】:

【参考方案2】:

您的问题是您错误地将UITableViewCell 的内容视图连接为名为@9​​87654323@ 的UIImageView,这肯定没有导致崩溃的成员图像

【讨论】:

【参考方案3】:

您好,我已经通过图片解释了我的答案,希望对您有所帮助

【讨论】:

【参考方案4】:

[UITableViewCellContentView setImage:]: unrecognized selector sent to instance 表示单元格中的 photoImageView 插座并不是真正的 UIImageView。出于某种原因, photoImageView 出口似乎指向单元格的内容视图。我的猜测是你错误地将单元格的 contentview 连接到了这个 outlet 而不是 imageview。

此外,当发生此类错误时,有时在 XCode 中进行“清理”会有所帮助。

【讨论】:

我可以尝试删除photoImageView 并重新连接吗? 是的,绝对的

以上是关于无法在 TableCellView 中初始化 UIImage的主要内容,如果未能解决你的问题,请参考以下文章

tableCellView 内的 NSButton:如何对基于视图的 NSTableView/NSArrayController 使用“动作调用”

Firebase 无法在发布版本中初始化,Flutter

jquery ui Dialog:无法在初始化之前调用对话框上的方法

ReferenceError:在初始化React Collapse Component之前无法访问词法声明'useStyles',axios获取数据材料ui useStyles

element-ui 表单编辑之后再新增表单数据无法清空问题(已解决)

无法使用滑块按钮播放/停止铃声