2017-02-01 23 views
3

Итак, я хочу поместить различные изображения в ячейки таблицы, и у меня есть 3 разных файла. Я уже сделал некоторую кодировку, но теперь у меня проблемы с ее завершением. Пожалуйста, посмотрите мой код и расскажите, как справиться с этой борьбой, я новичок в этом. (Застрял целый день) ... Весь смысл в том, чтобы иметь пользовательские ячейки с разными изображениями и двумя ярлыками.Таблица Просмотр пользовательских ячеек с разными данными

Первый файл

class MenuCells { 

private var _cellTitle: String 
private var _cellDetails: String 
private var _cellIcon: Array<String> 

var cellTitle: String { 
    return _cellTitle 
} 

var cellDetails: String { 
    return _cellDetails 
} 

var cellIcon: Array<String> { 
    return _cellIcon 
} 

init(cellTitle: String, cellDetails: String, cellIcon: Array<String>) { 

    _cellTitle = cellTitle 
    _cellDetails = cellDetails 
    _cellIcon = cellIcon 

} 

func cellData() { 
    _cellTitle = "x" 
    _cellDetails = "y" 
    _cellIcon = ["1","2","3","4"] 
} 

} 

Второй файл

class MenuCell: UITableViewCell { 


@IBOutlet weak var bg: UIView! 
@IBOutlet weak var cellTitle: UILabel! 
@IBOutlet weak var cellDetails: UILabel! 
@IBOutlet weak var cellIcon: UIImageView! 


override func awakeFromNib() { 
    super.awakeFromNib() 


} 

func configureCell(menuCell: MenuCells) { 

    cellTitle.text = menuCell.cellTitle 
    cellDetails.text = menuCell.cellDetails 
    cellIcon.image = UIImage(named: "\(menuCell.cellIcon)") 

} 
} 

третьего файла (Здесь Im застрял, я не знаю, как реализовать данные)

import UIKit 

class MenuVC: UIViewController, UITableViewDelegate, UITableViewDataSource { 


@IBOutlet weak var tableMenu: UITableView! 



override func viewDidLoad() { 
    super.viewDidLoad() 

    tableMenu.delegate = self 
    tableMenu.delegate = self 



} 

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

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return 4 
} 

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCell(withIdentifier: "menuCell", for: indexPath) as? MenuCell 


    return cell 
} 


} 
+0

Ваш код совершенен. почти –

+0

ViewDidLoad устанавливает 'tableMenu.delegate = self' дважды, и по внешнему виду вы не задали свой источник данных. Попробуйте установить свой источник данных, заменив одну из этих строк на 'tableMenu.dataSource = self', или подключив его на своем раскадровке к вашему ViewController через инспектор соединений. –

ответ

1

Вам нужно сделать что-то вроде этого.

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
let cell = tableView.dequeueReusableCell(withIdentifier: "menuCell", for: indexPath) as? MenuCell 

// create object of MenuCells file and assign your variables.Instead of creating array of images in MenuCell, create array in this file and send image as a param 1-by-1. 
let myMenuCells = MenuCells(cellTitle: "Title", cellDetails: "Details", cellIcon: image) 

//By this below method set your data in your outlets. As this func is already doing so call it. 
cell.configureCell(menuCell: myMenuCells) 

return cell 
    } 

и изменить

  • private var _cellIcon: Array<String> в private var _cellIcon: String, потому что вы просто отправить имя изображения и func configureCell авто присвойте изображение на выходе.

  • cellIcon.image = UIImage(named: "\(menuCell.cellIcon)") к cellIcon.image = UIImage(named: menuCell.cellIcon)

0

Если у вас есть прототип клетка в раскадровке, вы можете установить идентификатор для каждого из опытных образцов клеток, а также использовать, если заявления, чтобы иметь код, выполняемые отдельно для каждой ячейки. (Итак, проверьте, является ли идентификатор для ячейки A, если это так, запустите настройку для ячейки A, иначе запустите настройку для ячейки B).

+0

Спасибо за совет, я думал об этом, так как мне нужно всего 4 ячейки, но позже мне понадобится гораздо больше. В настоящее время ни одна из ячеек не появляется, есть ли у вас какие-либо идеи? –

+0

Угадайте, ваш viewDidLoad. Вы установили tableMenu.delegate = self, дважды. Вам необходимо установить ваш источник данных. –

+0

lol thanks, did see this: D: D –