У меня есть контроллер с табличным представлением на нем. Определили свои ячейки в представлении, а затем привязали его к представлению таблицы. (Извините за терминологию). Приложение строит и работает нормально, но ни одна из ярлыков, определенных в ячейке, ничего не показывает. Вся таблица пуста, за исключением разделителей ячеек. Я следил за многочисленными учебниками и много раз искал SO по причинам, как создавать (Create a Table View - Apple docs), настройки для проверки, все с теми же результатами. Я также попытался очистки, перезапуск Xcode и т.д. Это Xcode 8/Swift 3.Swift/Как заполнить UITableViewCells
Контроллер вид имеет вид таблицы и зарегистрировать класс клеток, как это в viewDidLoad
self.tableView.registerCellClass(MenuTableViewCell.self)
UITableViewDataSource код
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return menusItems.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: MenuTableViewCell.identifier, for: indexPath) as! MenuTableViewCell
let item = menusItems[indexPath.row]
cell.setData(item)
return cell
}
MenuItems представляет собой массив из структуры я, что создается, прежде чем что-либо еще будет сделано
BaseTableViewCell
open class BaseTableViewCell: UITableViewCell {
class var identifier: String { return String.className(self) }
public required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setup()
}
override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
setup()
}
open override func awakeFromNib() {
}
open func setup() {
}
open override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
open class func height() -> CGFloat {
return 48
}
open func setData(_ data: Any?) {
if let menuText = data as? String {
self.textLabel?.text = menuText
}
if let menuImage = data as? UIImage {
self.imageView?.image = menuImage
}
}
}
Просмотр таблицы кода Cell - наследует BaseTableViewCell
class MenuTableViewCell: BaseTableViewCell {
//MARK: Properties
@IBOutlet weak var name: UILabel!
@IBOutlet weak var icon: 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
}
override func setData(_ data: Any?) {
if let data = data as? MenuTableViewCellData {
NSLog("menu name - %@", data.text)
self.icon?.image = data.image
self.name?.text = data.text
}
}
}
Все названия меню записываются в области отладки, поэтому код выполняется.
Я не знаю, есть ли недостаток крючка или что-то еще. Пожалуйста, дайте мне знать, если что-то еще необходимо. Любая помощь приветствуется.
Скриншоты показывающие IBOutlets подключен
Вот делегат и источник данных от контроллера
extension LeftViewController : UITableViewDelegate {
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return MenuTableViewCell.height()
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if let menu = LeftMenu(rawValue: indexPath.row) {
self.changeViewController(menu)
}
}
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if self.tableView == scrollView {
}
}
}
extension LeftViewController : UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return menusItems.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: MenuTableViewCell.identifier, for: indexPath) as! MenuTableViewCell
let item = menusItems[indexPath.row]
cell.setData(item)
return cell
}
}
Спасибо всем за вашу помощь. Я смог заставить его работать. Я удалил XIB-файл, создал макет в представлении, а затем подключил его оттуда (после этого следует here).
где вызывается меню? Отправьте свой код – Rob
, вы проложили розетки с помощью конструктора интерфейса? –
@MatiasElorriaga я сделал. –