Permettez-moi de commencer par répondre à vos questions.
Dois-je coder une propre classe pour chaque cellule? => Oui, je le crois. Au moins, je ferais de cette façon.
Puis-je utiliser un tableviewController? => Oui, vous pouvez. Cependant, vous pouvez également avoir une vue de table dans votre contrôleur de vue.
Comment puis-je remplir des données dans différentes cellules? => Selon les conditions, vous pouvez renseigner les données dans différentes cellules. Par exemple, supposons que vous souhaitiez que vos deux premières lignes ressemblent au premier type de cellules. Donc, vous créez / réutilisez simplement le premier type de cellules et définissez ses données. Ce sera plus clair, quand je vous montrerai les captures d'écran, je suppose.
Permettez-moi de vous donner un exemple avec un TableView à l'intérieur d'un ViewController. Une fois que vous avez compris le concept principal, vous pouvez essayer de modifier comme vous le souhaitez.
Étape 1: Créez 3 TableViewCells personnalisées. Je l'ai nommé, FirstCustomTableViewCell, SecondCustomTableViewCell, ThirdCustomTableViewCell. Vous devriez utiliser des noms plus significatifs.
Étape 2: Allez dans Main.storyboard et faites glisser et déposez un TableView dans votre View Controller. Maintenant, sélectionnez la vue de table et accédez à l'inspecteur d'identité. Définissez "Prototype Cells" sur 3. Ici, vous venez de dire à votre TableView que vous pouvez avoir 3 types de cellules différents.
Étape 3: Maintenant, sélectionnez la 1ère cellule dans votre TableView et dans l'inspecteur d'identité, mettez «FirstCustomTableViewCell» dans le champ Classe personnalisée, puis définissez l'identificateur comme «firstCustomCell» dans l'inspecteur d'attributs.
Faites de même pour tous les autres: définissez leurs classes personnalisées sur respectivement "SecondCustomTableViewCell" et "ThirdCustomTableViewCell". Définissez également les identificateurs comme secondCustomCell et thirdCustomCell consécutivement.
Étape 4: Modifiez les classes de cellules personnalisées et ajoutez des prises en fonction de vos besoins. Je l'ai édité en fonction de votre question.
PS: Vous devez mettre les points de vente sous la définition de classe.
Ainsi, dans le FirstCustomTableViewCell.swift, sous le
class FirstCustomTableViewCell: UITableViewCell {
vous mettriez votre étiquette et vos prises de vue d'image.
@IBOutlet weak var myImageView: UIImageView!
@IBOutlet weak var myLabel: UILabel!
et dans SecondCustomTableViewCell.swift, ajoutez les deux étiquettes comme-
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)
}
}
et le ThirdCustomTableViewCell.swift devrait ressembler à -
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)
}
}
Étape 5: Dans votre ViewController, créez une prise pour votre TableView et définissez la connexion à partir du storyboard. En outre, vous devez ajouter UITableViewDelegate et UITableViewDataSource dans la définition de classe en tant que liste de protocoles. Donc, votre définition de classe devrait ressembler à -
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
Ensuite, attachez les UITableViewDelegate et UITableViewDatasource de votre vue de table à votre contrôleur. À ce stade, votre viewController.swift devrait ressembler à-
import UIKit
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
PS: Si vous aviez utilisé un TableViewController plutôt qu'un TableView dans un ViewController, vous auriez pu ignorer cette étape.
Étape 6: Faites glisser et déposez les vues d'image et les étiquettes dans votre cellule en fonction de la classe Cell. puis fournissez une connexion à leurs points de vente à partir du storyboard.
Étape 7: Maintenant, écrivez les méthodes requises de UITableViewDatasource dans le contrôleur de vue.
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()
}
}