Lassen Sie mich zunächst Ihre Fragen beantworten.
Muss ich für jede Zelle eine eigene Klasse codieren? => Ja, ich glaube schon. Zumindest würde ich das so machen.
Kann ich einen tableviewController verwenden? => Ja, das können Sie. Sie können jedoch auch eine Tabellenansicht in Ihrem View Controller haben.
Wie kann ich Daten in verschiedenen Zellen füllen? => Abhängig von den Bedingungen können Sie Daten in verschiedenen Zellen auffüllen. Angenommen, Sie möchten, dass Ihre ersten beiden Zeilen dem ersten Zelltyp entsprechen. Sie erstellen / verwenden also einfach den ersten Zelltyp und legen dessen Daten fest. Es wird klarer, wenn ich Ihnen die Screenshots zeige, denke ich.
Lassen Sie mich Ihnen ein Beispiel mit einer TableView in einem ViewController geben. Sobald Sie das Hauptkonzept verstanden haben, können Sie versuchen, es nach Belieben zu ändern.
Schritt 1: Erstellen Sie 3 benutzerdefinierte TableViewCells. Ich habe es FirstCustomTableViewCell, SecondCustomTableViewCell, ThirdCustomTableViewCell genannt. Sie sollten aussagekräftigere Namen verwenden.
Schritt 2: Gehen Sie zum Main.storyboard und ziehen Sie eine TableView per Drag & Drop in Ihren View Controller. Wählen Sie nun die Tabellenansicht aus und rufen Sie den Identitätsinspektor auf. Setzen Sie den "Prototyp Cells" auf 3. Hier haben Sie Ihrem TableView gerade mitgeteilt, dass Sie möglicherweise 3 verschiedene Arten von Zellen haben.
Schritt 3: Wählen Sie nun die erste Zelle in Ihrer TableView und im Identitätsinspektor aus, geben Sie "FirstCustomTableViewCell" in das Feld "Benutzerdefinierte Klasse" ein und legen Sie den Bezeichner im Attributinspektor als "firstCustomCell" fest.
Machen Sie dasselbe für alle anderen - Legen Sie ihre benutzerdefinierten Klassen als "SecondCustomTableViewCell" bzw. "ThirdCustomTableViewCell" fest. Legen Sie außerdem die Bezeichner nacheinander als secondCustomCell und ThirdCustomCell fest.
Schritt 4: Bearbeiten Sie die benutzerdefinierten Zellenklassen und fügen Sie nach Bedarf Steckdosen hinzu. Ich habe es basierend auf Ihrer Frage bearbeitet.
PS: Sie müssen die Steckdosen unter die Klassendefinition stellen.
Also, in der FirstCustomTableViewCell.swift, unter dem
class FirstCustomTableViewCell: UITableViewCell {
Sie würden Ihre Etiketten- und Bildansicht-Steckdosen platzieren.
@IBOutlet weak var myImageView: UIImageView!
@IBOutlet weak var myLabel: UILabel!
Fügen Sie in SecondCustomTableViewCell.swift die beiden Beschriftungen wie folgt hinzu:
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)
}
}
und die ThirdCustomTableViewCell.swift sollte wie folgt aussehen:
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)
}
}
Schritt 5: Erstellen Sie in Ihrem ViewController ein Outlet für Ihre TableView und stellen Sie die Verbindung über das Storyboard her. Außerdem müssen Sie UITableViewDelegate und UITableViewDataSource in der Klassendefinition als Protokollliste hinzufügen. Ihre Klassendefinition sollte also so aussehen:
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
Hängen Sie anschließend die UITableViewDelegate und UITableViewDatasource Ihrer Tabellenansicht an Ihren Controller an. Zu diesem Zeitpunkt sollte Ihr viewController.swift wie folgt aussehen:
import UIKit
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
PS: Wenn Sie einen TableViewController anstelle eines TableView in einem ViewController verwenden würden, hätten Sie diesen Schritt überspringen können.
Schritt 6: Ziehen Sie die Bildansichten und Beschriftungen entsprechend der Cell-Klasse in Ihre Zelle und legen Sie sie dort ab. und stellen Sie dann über das Storyboard eine Verbindung zu ihren Steckdosen her.
Schritt 7: Schreiben Sie nun die erforderlichen Methoden der UITableViewDatasource in den View Controller.
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()
}
}