无法在TableCellView

时间:2018-05-18 10:53:03

标签: swift xcode uitableview swift3

我正在努力学习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] ***因未捕获的异常终止应用程序   &#39; NSInvalidArgumentException&#39;,原因:&#39; - [UITableViewCellContentView   setImage:]:无法识别的选择器发送到实例0x7fa19ed019a0&#39;

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

这是我的资产的样子 -

enter image description here

请帮忙吗?如果我可以添加更多详细信息,请与我们联系。

修改

我的网点看起来像这样 -

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上。其他两个网点工作正常。

4 个答案:

答案 0 :(得分:1)

请检查您的IBOutlet是否与您的手机绑定了UIImageView。

答案 1 :(得分:1)

您的问题是您错误地将UITableViewCell的contentView连接为名为UIImageView的{​​{1}},其中肯定没有会导致崩溃的成员图片

答案 2 :(得分:1)

您好我已经通过图片解释了我的答案,我希望这会对您有所帮助 enter image description here

答案 3 :(得分:0)

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

此外,它有时有助于做一个&#34;清洁&#34;在XCode中发生此类错误时。