#ios #swift
#iOS #swift
Вопрос:
У меня возникла проблема при попытке отобразить массив изображений в каждой ячейке для просмотра таблицы.
У меня есть отдельный TableViewCell
файл Swift, в котором у меня есть UIImage
ссылка на ячейку. Выход называется: CellVenueImage
По какой-то причине, когда я пытаюсь реализовать изображение на моем контроллере представления TableView, я получаю сообщение об ошибке: Value of type 'TableViewCell' has no member 'CellVenueImage'
Вот строка, в которой это происходит:
cell.CellVenueImage.image = imagename
Использование Swift 3.
Вот код для представления таблицы:
import UIKit
class VenueTableViewController: UITableViewController {
let VenueImageList = ["1970s.png","1980s.png","1990s.png"]
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// MARK: - Table view data source
override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return VenueImageList.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "VenueCell", for: indexPath) as! TableViewCell
let imagename = UIImage(named: VenueImageList[indexPath.row])
cell.CellVenueImage.image = imagename
return cell
}
Код tableViewCell:
import UIKit
class VenuesTableViewCell: UITableViewCell {
@IBOutlet weak var CellVenueImage: UIImageView!
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
}
Комментарии:
1. пожалуйста, код для tableViewCell
2. @zombie Добавил, спасибо!
Ответ №1:
Ошибка в том, что вы не используете созданный TableViewCell
вами подкласс, вы используете обычный UITableViewCell
.
let cell = tableView.dequeueReusableCell(withIdentifier: "VenueCell", for: indexPath) as! TableViewCell
Вам нужно использовать его в качестве подкласса UITableViewCell.
Если оно называется «VenuesTableViewCell», например: class VenuesTableViewCell: UITableViewCell {
, затем приведите его как VenuesTableViewCell.
let cell = tableView.dequeueReusableCell(withIdentifier: "VenueCell", for: indexPath) as! VenuesTableViewCell
Комментарии:
1. Это исправлено! Большое вам спасибо.
2. Исправление было следующим: пусть cell = TableView.dequeueReusableCell(с идентификатором: «VenueCell», для: indexPath) как! VenuesTableViewCell вместо: as! VenueCell
3. Да, это было то, что я пытался вам сказать с объяснением 🙂 Рад помочь
4. Странно, теперь, когда я пытаюсь получить доступ к Tableview через панель вкладок, я получаю сообщение об ошибке signal SIGABRT: *** Завершение работы приложения из-за неперехваченного исключения ‘NSInternalInconsistencyException’, причина: ‘невозможно удалить из очереди ячейку с идентификатором VenueCell — необходимо зарегистрировать перо или класс для идентификатора или подключитьпрототип ячейки в раскадровке ‘
5. @Miles Не забудьте принять ответ, если он был полезен 😉
Ответ №2:
let cell = tableView.dequeueReusableCell(withIdentifier: "VenueCell", for: indexPath) as! VenuesTableViewCell