Ответ 1
Позвольте мне сначала ответить на ваши вопросы.
Нужно ли мне кодировать собственный класс для каждой ячейки? = > Да, я так считаю. По крайней мере, я бы сделал это.
Можно ли использовать один tableviewController? = > Да, вы можете. Тем не менее, вы также можете иметь представление таблицы внутри вашего контроллера просмотра.
Как я могу заполнить данные в разных ячейках? = > В зависимости от условий вы можете заполнять данные в разных ячейках. Например, предположим, что вы хотите, чтобы ваши первые две строки были похожими на ячейки первого типа. Таким образом, вы просто создаете/повторно используете ячейки первого типа и устанавливаете данные. Это будет более ясно, когда я покажу вам снимки экрана, я думаю.
Позвольте мне привести пример с TableView внутри ViewController. Как только вы поймете основную концепцию, вы можете попробовать и изменить все, что захотите.
Шаг 1: Создайте 3 пользовательских TableViewCells. Я назвал его, FirstCustomTableViewCell, SecondCustomTableViewCell, ThirdCustomTableViewCell. Вы должны использовать более значимые имена.
Шаг 2. Перейдите на Main.storyboard и перетащите TableView внутри своего контроллера просмотра. Теперь выберите вид таблицы и перейдите к инспектору идентификации. Установите "Prototype Cells" на 3. Здесь вы просто сказали своему TableView, что у вас могут быть 3 разных типа ячеек.
Шаг 3: Теперь выберите первую ячейку в TableView и инспекторе идентификации, поставьте "FirstCustomTableViewCell" в поле "Пользовательский класс", а затем установите идентификатор как "firstCustomCell" в инспекторе атрибутов.
Сделайте то же самое для всех остальных. Установите свои пользовательские классы как "SecondCustomTableViewCell" и "ThirdCustomTableViewCell" соответственно. Также установите идентификаторы как secondCustomCell и thirdCustomCell последовательно.
Шаг 4. Редактирование пользовательских классов ячеек и добавление точек в соответствии с вашими потребностями. Я отредактировал его по вашему вопросу.
P.S: Вам нужно поместить выходы под определение класса.
Итак, в FirstCustomTableViewCell.swift под
class FirstCustomTableViewCell: UITableViewCell {
вы бы поместили свои метки и изображения в виде изображений.
@IBOutlet weak var myImageView: UIImageView!
@IBOutlet weak var myLabel: UILabel!
и в SecondCustomTableViewCell.swift добавьте две метки, такие как -
import UIKit
class SecondCustomTableViewCell: UITableViewCell {
@IBOutlet weak var myLabel_1: UILabel!
@IBOutlet weak var myLabel_2: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
}
}
а ThirdCustomTableViewCell.swift должен выглядеть как
import UIKit
class ThirdCustomTableViewCell: UITableViewCell {
@IBOutlet weak var dayPicker: UIDatePicker!
override func awakeFromNib() {
super.awakeFromNib()
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
}
}
Шаг 5: В вашем ViewController создайте Outlet для TableView и установите соединение из раскадровки. Кроме того, вам необходимо добавить UITableViewDelegate и UITableViewDataSource в определение класса в качестве списка протоколов. Итак, ваше определение класса должно выглядеть так:
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
После этого присоедините UITableViewDelegate и UITableViewDatasource вашего представления таблицы к вашему контроллеру. В этот момент ваш viewController.swift должен выглядеть как
import UIKit
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
P.S: Если вы должны использовать TableViewController, а не TableView внутри ViewController, вы могли бы пропустить этот шаг.
Шаг 6: Перетащите изображения и метки изображений в ячейке в соответствии с классом Cell. а затем обеспечить подключение к своим выходам из раскадровки.
Шаг 7: Теперь напишите требуемые методы UITableViewDatasource в контроллере представления.
import UIKit
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 3
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
if indexPath.row == 0 {
let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "firstCustomCell")
//set the data here
return cell
}
else if indexPath.row == 1 {
let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "secondCustomCell")
//set the data here
return cell
}
else {
let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "thirdCustomCell")
//set the data here
return cell
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}