Дозвольте спочатку відповісти на ваші запитання.
Чи потрібно кодувати власний клас для кожної комірки? => Так, я вважаю так. Принаймні, я би так зробив.
Чи можу я використовувати один tableviewController? => Так, ви можете. Однак ви також можете мати вигляд таблиці всередині вашого контролера перегляду.
Як я можу заповнити дані в різних клітинках? => Залежно від умов, ви можете заповнити дані в різних клітинках. Наприклад, припустимо, що ви хочете, щоб ваші перші два ряди були схожими на клітини першого типу. Отже, ви просто створюєте / повторно використовуєте клітини першого типу та встановлюєте його дані. Це буде зрозуміліше, коли я покажу вам знімки екрана, я думаю.
Дозвольте навести приклад із TableView всередині ViewController. Після того, як ви зрозумієте головну концепцію, ви можете спробувати і змінити будь-який потрібний вам спосіб.
Крок 1: Створіть 3 користувацьких TableViewCells. Я назвав його, FirstCustomTableViewCell, SecondCustomTableViewCell, ThirdCustomTableViewCell. Вам слід використовувати більш значущі імена.
Крок 2: Перейдіть на Main.storyboard і перетягніть таблицю TableView всередину вашого контролера перегляду. Тепер виберіть подання таблиці та перейдіть до інспектора посвідчення особи. Встановіть "Прототипові клітини" на 3. Тут ви щойно сказали вашому TableView, що у вас можуть бути 3 різних видів комірок.
Крок 3: Тепер виберіть першу клітинку у вашому TableView та інспекторі ідентичності, в поле "Спеціальний клас" покладіть "FirstCustomTableViewCell", а потім встановіть ідентифікатор як "firstCustomCell" в інспекторі атрибутів.
Зробіть те саме для всіх інших - встановіть їх власні класи як "SecondCustomTableViewCell" та "ThirdCustomTableViewCell" відповідно. Також встановіть ідентифікатори як secondCustomCell і thirdCustomCell послідовно.
Крок 4: Відредагуйте власні класи клітинок і додайте торгові точки відповідно до ваших потреб. Я відредагував це на основі вашого запитання.
PS: Вам потрібно поставити торгові точки під визначення класу.
Отже, у програмі 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 створіть розетку для TableView та встановіть підключення з розгортки. Також вам потрібно додати UITableViewDelegate та UITableViewDataSource до визначення класу як список протоколів. Отже, визначення вашого класу має виглядати як:
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
Після цього приєднайте UITableViewDelegate та UITableViewDatasource перегляду таблиці до свого контролера. У цей момент ваш поглядController.swift повинен виглядати як-
import UIKit
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
PS: Якщо ви використовували 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()
}
}