尝试在表视图中显示图像时出错

时间:2016-07-13 20:32:28

标签: swift uitableview uiimageview

我正在构建一个应用程序,它会在表格视图中列出一堆名人。它将包括他们的图像和他们的Twitter用户名。我在编辑器中没有错误,但是当我运行我的应用程序时,我收到以下消息:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIImageView _isResizable]: unrecognized selector sent to instance

我不确定为什么我会收到此消息以及我可以采取哪些措施来解决此问题...

以下是我的ViewController中的代码:

class CelebListViewController: UITableViewController {

    let celebs = Celeb.celebsFromBundle()

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        // #warning Incomplete implementation, return the number of rows
        return celebs.count
    }

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

        let cell: CelebListViewCell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! CelebListViewCell

        //Keep
        let celeb = celebs[indexPath.row]

        cell.setCell(celeb.twitter, imageName: celeb.imageName)

        return cell

    }

}

以下是我的ViewCell代码:

class CelebListViewCell: UITableViewCell {

    @IBOutlet weak var pic: UIImageView!

    @IBOutlet weak var handle: UILabel!

    func setCell(handleText: String, imageName: String) {
        self.handle.text = handleText
        self.pic.image = UIImage(named: imageName)
    }

}

我觉得这个问题是由于我在某处使用UIImage而不是UIImageView引起的,但我找不到它。

无论如何,谢谢你的帮助。

P.S。我有一个名人对象,我正在设置所有数据。以下是代码:

struct Celeb {
    let name: String
    let twitter: String
    let imageName: String
    let image: UIImage

    init(name: String, twitter: String, image: UIImage, imageName: String) {
        self.name = name
        self.twitter = twitter
        self.image = image
        self.imageName = imageName
    }

    static func celebsFromBundle() -> [Celeb] {

        var celebs = [Celeb]()

        guard let path = NSBundle.mainBundle().pathForResource("celebs", ofType: "json"),
            data = NSData(contentsOfFile: path) else {
                return celebs
        }

        do {
            let rootObject = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.AllowFragments)

            guard let celebObjects = rootObject["celebs"] as? [[String: AnyObject]] else {
                return celebs
            }

            for celebObject in celebObjects {
                if let name = celebObject["name"] as? String,
                    twitter = celebObject["twitter"]  as? String,
                    imageName = celebObject["image"] as? String,
                    image = UIImage(named: imageName) {

                    let celeb = Celeb(name: name, twitter: twitter, image: image, imageName: imageName)
                    celebs.append(celeb)

                }
            }

        } catch {
            return celebs
        }

        return celebs
    }

}

这也是我的故事板文档大纲,如果有帮助: enter image description here

图片连接: enter image description here

1 个答案:

答案 0 :(得分:1)

好的,这就是问题所在。你有两个插座连接,图像和图片。删除“图片”,因为在您的代码中您正在使用“pic”。 当你有多个连接时,Xcode会感到困惑。 希望它有所帮助!

P.S。要删除“图像”连接,只需点击旁边的“X”按钮即可。