Vorrei iniziare rispondendo prima alle tue domande.
Devo codificare una classe per ogni cella? => Sì, credo di sì. Almeno, lo farei in questo modo.
Posso usare un tableviewController? => Sì, puoi. Tuttavia, puoi anche avere una vista tabella all'interno del controller della vista.
Come posso popolare i dati in celle diverse? => A seconda delle condizioni, è possibile popolare i dati in celle diverse. Ad esempio, supponiamo che tu voglia che le tue prime due righe siano come il primo tipo di celle. Quindi, devi solo creare / riutilizzare il primo tipo di celle e impostare i suoi dati. Sarà più chiaro quando ti mostrerò le schermate, immagino.
Lascia che ti faccia un esempio con un TableView all'interno di un ViewController. Una volta compreso il concetto principale, puoi provare a modificarlo come preferisci.
Passaggio 1: creare 3 TableViewCell personalizzate. L'ho chiamato FirstCustomTableViewCell, SecondCustomTableViewCell, ThirdCustomTableViewCell. Dovresti usare nomi più significativi.
Passaggio 2: vai su Main.storyboard e trascina e rilascia un TableView all'interno del tuo View Controller. Ora seleziona la vista tabella e vai all'ispettore identità. Impostare "Prototype Cells" su 3. Qui, hai appena detto al tuo TableView che potresti avere 3 diversi tipi di celle.
Passaggio 3: ora, seleziona la prima cella nel tuo TableView e nell'Ispettore di identità, metti "FirstCustomTableViewCell" nel campo della classe personalizzata e quindi imposta l'identificatore come "firstCustomCell" nell'ispettore degli attributi.
Fai lo stesso per tutti gli altri: imposta le classi personalizzate come "SecondCustomTableViewCell" e "ThirdCustomTableViewCell" rispettivamente. Impostare anche gli identificatori come secondCustomCell e thirdCustomCell consecutivamente.
Passaggio 4: modifica le classi di celle personalizzate e aggiungi punti vendita in base alle tue necessità. L'ho modificato in base alla tua domanda.
PS: devi mettere i punti vendita sotto la definizione di classe.
Quindi, nel FirstCustomTableViewCell.swift, sotto
class FirstCustomTableViewCell: UITableViewCell {
metteresti la tua etichetta e punti vendita di visualizzazione delle immagini.
@IBOutlet weak var myImageView: UIImageView!
@IBOutlet weak var myLabel: UILabel!
e in SecondCustomTableViewCell.swift, aggiungi le due etichette come-
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)
}
}
e ThirdCustomTableViewCell.swift dovrebbe essere simile a:
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)
}
}
Passaggio 5: nel tuo ViewController, crea un outlet per il tuo TableView e imposta la connessione dallo storyboard. Inoltre, è necessario aggiungere UITableViewDelegate e UITableViewDataSource nella definizione della classe come elenco di protocolli. Quindi, la definizione della tua classe dovrebbe assomigliare a:
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
Successivamente, collega UITableViewDelegate e UITableViewDatasource della visualizzazione tabella al controller. A questo punto il tuo viewController.swift dovrebbe apparire come:
import UIKit
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
PS: se avessi utilizzato un TableViewController anziché un TableView all'interno di un ViewController, avresti potuto saltare questo passaggio.
Passaggio 6: trascina e rilascia le visualizzazioni e le etichette dell'immagine nella cella in base alla classe Cell. e quindi fornire la connessione ai loro punti vendita dallo storyboard.
Passaggio 7: ora, scrivi i metodi richiesti di UITableViewDatasource nel controller di visualizzazione.
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()
}
}