Я новичок в 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!
}