Je rencontre des problèmes pour visualiser ma cellule de vue de table personnalisée dans le constructeur d'interface.Swift 3: cellule de vue de table personnalisable
Est-ce que quelqu'un sait comment faire une cellule de table @Designable
?
Lorsque j'importe ma cellule de vue de table personnalisée dans un storyboard avec une vue de table, seule la couleur de fond fonctionne. Lorsque j'essaie de définir le texte de l'étiquette dans ma cellule de vue de table, le constructeur de l'interface se bloque.
Ma configuration est appelée à partir des méthodes suivantes:
- override public init(style: UITableViewCellStyle, reuseIdentifier: String?)
- required public init?(coder aDecoder: NSCoder)
Je pense qu'il est parce que mon étiquette n'est pas initialisés en ce moment?
code:
import UIKit
@IBDesignable class ProgressHeaderTableViewCell: UITableViewCell {
@IBOutlet weak var headerLabel: UILabel!
// MARK: - View methods
override public init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
self.setupNib()
}
// MARK: - NSCoding
required public init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.setupNib()
}
func setupNib(){
self.backgroundColor = UIColor.blue
// self.headerLabel.text = "Hello world"
}
}
Code Mise à jour:
import UIKit
@IBDesignable class CustomTableView: UITableViewCell {
@IBOutlet weak var headerLabel: UILabel!
// MARK: - View methods
override func prepareForInterfaceBuilder() {
self.awakeFromNib()
}
override public init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
//check that there are no current subviews
if self.subviews.count == 0 {
self.setupNib()
}
}
// MARK: - NSCoding
required public init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
//check that there are no current subviews
if self.subviews.count == 0 {
self.setupNib()
}
}
override func awakeFromNib() {
super.awakeFromNib()
self.backgroundColor = UIColor.blue
if headerLabel != nil {
self.headerLabel.text = "Hello world"
}
}
func setupNib(){
let bundle = Bundle(for: CustomTableView.self)
guard let customView = bundle.loadNibNamed("CustomTableView",owner: self, options: nil)?.first as? CustomTableView else {
return
}
customView.frame = self.bounds
self.addSubview(customView)
}
}
Merci!
Veuillez ajouter les méthodes de source de données tbaleView. – CodeChanger
Les méthodes de source de données sont ajoutées. J'essaye de placer l'étiquette à l'intérieur de mon UITableViewCell, ce qui veut dire que j'ai un IBOutlet sur mon label? Ne devrait-il pas être initialisé alors? – PAK
Pouvez-vous poster du code pour plus de précisions? – CodeChanger