图片未显示在 table 单元格中

Image not showing in a table cell

我是 Swift 的新手,我正在尝试创建一个 table 在其每个单元格中显示图像,但图像未显示。

首先,我创建一个 "Meme" 结构:

struct Meme {
    var topText: String
    var bottomText: String
    var originalImage: UIImage
    var memedImage: UIImage

    init(topText: String, bottomText: String, originalImage: UIImage, memedImage: UIImage) {
        self.topText = topText
        self.bottomText = bottomText
        self.originalImage = originalImage
        self.memedImage = memedImage
    }
}

其次,我将var memes = [Meme]()放在AppDelegate中。这是按照教程的说明。

第三,我通过以下方式附加结构的实例:

    @IBAction func shareButton(_ sender: UIBarButtonItem) {

        if let topText = topTextField.text, let bottomText = bottomTextField.text {

            let memedImage = generateMemedImage()
            let finishedMeme = Meme(topText: topText, bottomText: bottomText, originalImage: imageView.image!, memedImage: memedImage)
            let ac = UIActivityViewController(activityItems: [memedImage], applicationActivities: nil)
            present(ac, animated: true, completion: nil)
            ac.completionWithItemsHandler = { activity, success, items, error in
                if success {
                    let object = UIApplication.shared.delegate
                    let appDelegate = object as! AppDelegate
                    print(finishedMeme)
                    appDelegate.memes.append(finishedMeme)
                    return
                } else {
                    print("cancel")
                }
                if let shareError = error {
                    print("error while sharing: \(shareError.localizedDescription)")
                }
            }
        }
    }

print(finishedMeme) 此处显示正在附加正确的数据。

最后,我得到 ViewController:

    var memes = [Meme]()
    let appDelegate = UIApplication.shared.delegate as! AppDelegate

    override func viewDidLoad() {
        super.viewDidLoad()
        self.tableView.reloadData()
        memes = appDelegate.memes
    }

    override func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return memes.count
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "TableViewCell", for: indexPath) 
        let meme = self.memes[indexPath.row]
        cell.imageView?.image = meme.memedImage
        return cell
    }

应用程序运行没有崩溃,除了没有图像显示在任何单元格上。我确实在控制台中看到一条消息:

Meme[7928:464364] [ShareSheet] connection invalidated

我已经尝试将单元格设置为默认值 class UITableViewCell 并且还尝试创建自定义 class 并将重新加载的数据分配给这些属性,但是 none 似乎有效:

class TableViewCell: UITableViewCell {

    @IBOutlet weak var cellLabel: UILabel!
    @IBOutlet weak var memeImageView: UIImageView!

}

在你的 ViewController 中,你在将数据添加到数组之前重新加载了 tableview 数据,使用下面的代码

 memes = appDelegate.memes
 self.tableView.reloadData()

而不是

 self.tableView.reloadData()
 memes = appDelegate.memes