【发布时间】:2020-04-27 02:42:26
【问题描述】:
我是 Swift 新手,正在尝试创建一个表格,在每个单元格中显示一个图像,但该图像没有显示。
首先,我创建一个“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] 连接无效
我已尝试将单元格设置为默认类 UITableViewCell,还尝试创建自定义类并将重新加载的数据分配给这些属性,但似乎都不起作用:
class TableViewCell: UITableViewCell {
@IBOutlet weak var cellLabel: UILabel!
@IBOutlet weak var memeImageView: UIImageView!
}
【问题讨论】:
-
您是否进行了以下操作? 1)在
numberOfRowsInSection打印 memes.count 确保你的 memes 有项目 2)将约束添加到自定义 UITableViewCell 元素 -
UITableViewCell来自默认的UITableViewController。numberOfRowsInSection显示 0。这告诉我appDelegate.memes.append(finishedMeme)这不起作用或let appDelegate = UIApplication.shared.delegate as! AppDelegate这不起作用。不知道如何解决这个问题。
标签: ios swift uitableview struct delegates