Je regardais la vidéo de Session 411 sur WWDC 2014 faisant référence à " Nouveautés de Interface Builder ", et j'essayais de créer des cadres pour créer des classes @IBDesignable
afin de prévisualiser mes modifications dans Storyboard. sans avoir à exécuter l'application.
Les propriétés @IBInspectable
s'affichent correctement lorsque j'ajoute ma classe à une vue spécifique et le rendent correctement avec le code ci-dessous:
@IBDesignable
class MyView: UIView {
@IBInspectable var borderColor: UIColor = UIColor.clearColor() {
didSet {
layer.borderColor = borderColor.CGColor
}
}
@IBInspectable var borderWidth: CGFloat = 0 {
didSet {
layer.borderWidth = borderWidth
}
}
@IBInspectable var cornerRadius: CGFloat = 0 {
didSet {
layer.cornerRadius = cornerRadius
}
}
@IBInspectable var masksToBounds: Bool = false {
didSet {
layer.masksToBounds = masksToBounds
}
}
}
J'ai remarqué que ces attributs étaient ajoutés à Attributs d'exécution définis par l'utilisateur (Sous Inspecteur d'identité ). Maintenant, ce à quoi je m'attends, c'est lorsque je lance le code pour conserver ces modifications que j'ai apportées avec une vue spécifique.
J'exécute l'application et la vue ne charge pas le Attributs d'exécution définis par l'utilisateur , et donne cette erreur en sortie (ne plante pas):
Unknown class MyClass in Interface Builder file
Failed to set (cornerRadius) user defined inspected property on (UIView)
Qu'est-ce qui empêche l'application de charger Attributs d'exécution définis par l'utilisateur que j'ai ajoutés sous Inspecteur d'identité ?
Le code est correct.
Lorsque vous déclarez un @ IBDesignable
, toutes les propriétés @IBInspectable
sont exposées au Générateur d'interface en tant qu'attributs d'exécution définis par l'utilisateur.
Le problème -
Classe inconnue MyClass dans le fichier Interface Builder
Cela signifie qu'Interface Builder n'a pas pu trouver de classe. Vous avez défini le mauvais class qui n'existe pas dans votre application.
Votre classe customView estMyView
mais vous avezMyClass
dans Interface Builder
Solution à résoudre -
MyView
Aussi Si vous avez décidé de retirer le client Designable, vous devriez
Selon le titre de la question, quelques personnes peuvent venir ici avec un problème légèrement différent (comme je l'ai fait). Si vous
Ensuite, vous pouvez également obtenir une erreur similaire à
Échec de la définition (xxx) de la propriété inspectée définie par l'utilisateur sur [Votre Custom View] ...: cette classe n'est pas compatible avec le codage des valeurs de clé pour la clé [xxx].
La solution consiste à supprimer l'ancienne propriété.
Ouvrez l'inspecteur d'identité de votre classe, sélectionnez le nom de la propriété sous Attributs d'exécution définis par l'utilisateur, puis appuyez sur le bouton Moins (-).
Encore une fois, ce n'est pas la réponse à la question du PO, mais c'est peut-être la réponse au problème de quelqu'un d'autre qui vient ici.