代码之家  ›  专栏  ›  技术社区  ›  Souvik Ghosh

无法在TableCellView中初始化UIImage

  •  0
  • Souvik Ghosh  · 技术社区  · 8 年前

    我正在努力学习斯威夫特,所以这个问题可能有点愚蠢,请容忍我。

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

    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格式的,带有名称 meal1 , meal2 meal3 . 但不知道我做错了什么。有趣的是,我有另一个图像- 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 回复  |  直到 8 年前
        1
  •  0
  •   rodskagg    8 年前

    [UITableViewCellContentView setImage:]: unrecognized selector sent to instance 指示单元格中的photoImageView出口不是uiImageView。出于某种原因,photoimageview出口似乎指向了细胞的内容视图。我猜你把手机的ContentView错误地连接到这个插座,而不是ImageView。

    此外,当发生类似这样的错误时,有时在Xcode中进行“清理”也会有所帮助。

        2
  •  1
  •   vatsal raval    8 年前

    请检查uiImageView的iboutlet是否与您的单元格绑定。

        3
  •  1
  •   Shehata Gamal    8 年前

    你的问题是你错误地连接了 UITableViewCell 作为一个 UIImageView 命名 photoImageView 它肯定没有导致崩溃的成员图像

        4
  •  1
  •   Niraj Paul    8 年前

    嗨,我已经用图片解释了我的答案,希望这能帮助你 enter image description here