J'ai suivi ce stackoverflow question & answer comme guide pour créer une cellule personnalisée dans la vue de table (sans ajouter de cellule prototype dans le storyboard), mais je n'ai pas réussi à créer une vue de table avec les cellules personnalisées, je viens d'obtenir des rangées de cellules vides. J'ai regardé d'autres questions de SO mais ils n'ont pas aidé.Impossible de créer une cellule de vue de table personnalisée par programme, Swift
Je crois que je fais quelque chose de mal avec la façon dont je enregistre la cellule. (FYI: Lorsque j'ajoute un prototype de cellule à ma vue de table et lui attribue un ID de classe et de cellule et que je désactive alors tableView.register(AppointmentTVCell.self, forCellReuseIdentifier: cellId)
cela fonctionne, cela ne m'intéresse pas puisque je veux minimiser l'utilisation de IB)
Ci-dessous mon tableViewController en story-board, à laquelle une vue de table classe AppointmentsTVC
a été attribué
Ci-dessous mon code pour la table View Controller
class AppointmentsTVC: UITableViewController {
let cellId = "reuseIdentifier"
override func viewDidLoad() {
super.viewDidLoad()
tableView.register(AppointmentTVCell.self, forCellReuseIdentifier: cellId)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// MARK: - Table view data source
override func numberOfSections(in tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return 2
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
print("Cell for Row at func called")
let cell = tableView.dequeueReusableCell(withIdentifier: cellId, for: indexPath) as! AppointmentTVCell // Creating a cell
cell.caseId.text = "123456"
return cell
}
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 150.0
}
}
Voici mon code pour la cellule vue de tableau personnalisé
class AppointmentTVCell: UITableViewCell {
let caseId: UILabel = {
let label = UILabel()
label.font = UIFont.systemFont(ofSize: 14)
label.frame = CGRect(x: 0, y: 50, width: 100, height: 30)
label.numberOfLines = 2
//label.text = "Hello"
label.textColor = UIColor.black
return label
}()
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
contentView.addSubview(caseId)
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}
Est-ce le problème parce que j'ajoute en sous-vue 'fonction awakeFromNib', je suis venu pour savoir que' awakeFromNib() 'ne sera pas appelé à moins d'un fichier nib. – user44776
Il est montré dans l'image que UITableView est le point d'entrée mais que le contrôleur UItabbar devrait l'être. –