Je ne comprends pas pourquoi ma propriété est réinitialisée à la valeur d'origine affectée (0.1). Je passe dans un fillHeight de 0.5 de la méthode extérieure. La propriété est définie dans le format pratique, mais ne s'applique pas à drawRect. Qu'est-ce que je rate?Problème de transmission de la propriété dans drawRect dans UIView
import UIKit
class MyView: UIView {
var fillHeight: CGFloat = 0.1
override init(frame: CGRect) {
super.init(frame: frame)
}
convenience init(fillHeight: CGFloat) {
self.init()
self.fillHeight = fillHeight
print("self.fillHeight: \(self.fillHeight) and fillHeight: \(fillHeight)")
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
}
override func drawRect(rect: CGRect) {
print("drawRect self.fillHeight: \(self.fillHeight)")
// custom stuff
}
}
sortie sur la console:
outsideAmount: en option (0,5)
self.fillHeight: 0,5 et fillHeight: 0,5
drawRect self.fillHeight: 0,1
EDIT : L'appel externe provient de UITableViewController avec un UITableViewCell personnalisé. L'image est pour la cellule.
func configureCell(cell: CustomTableViewCell, atIndexPath indexPath: NSIndexPath) {
let myObject = self.fetchedResultsController.objectAtIndexPath(indexPath) as! MyObject
cell.nameLabel.text = myObject.name
cell.strengthLabel.text = myObject.strength
cell.myView = MyView(fillHeight: CGFloat(myObject.fillAmount!))
...
PLUS EDIT:
import UIKit
class CustomTableViewCell: UITableViewCell {
@IBOutlet weak var nameLabel: UILabel!
@IBOutlet weak var strengthLabel: UILabel!
@IBOutlet weak var myView: MyView!
override func awakeFromNib() {
super.awakeFromNib()
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}
J'ai essayé de reproduire votre erreur, mais dans mon cas, il imprime 'drawRect self.fillHeight: 0.5'. Pouvez-vous publier le code dans lequel vous initialisez la vue et l'ajouter à la pile de vues? – joern
Merci joern. J'ai ajouté l'appel – Kurt
Pourriez-vous poster comment vous définissez la propriété 'myView' dans votre cellule personnalisée? Est-ce une propriété facultative? – joern