J'ai un projet Swift où j'ai ajouté une cible de framework avec une sous-classe personnalisée de UIView
afin que je puisse utiliser la nouvelle vue en direct dans Interface Builder dans Xcode 6. Mais quand j'essaie pour ajouter un @IBOutlet
dans ma sous-classe UIViewController
dans mon projet, j'obtiens une erreur "Utilisation du type non déclaré 'MyCustomView'" et je ne peux pas créer mon projet.
Voici mon code de la sous-classe UIViewController:
import UIKit
import MyCustomFramework
class MyViewController: UIViewController {
@IBOutlet var myCustomView: MyCustomView?
}
Et voici à quoi ressemble "MyCustomView.Swift" dans la cible "MyCustomFramework":
import UIKit
@IBDesignable class MyCustomView: UIView {
@IBOutlet var imageView: UIImageView?
init(coder aDecoder: NSCoder!) {
super.init(coder: aDecoder)
}
}
Quelqu'un sait ce que j'ai oublié? L'ai-je importé de manière incorrecte? Ai-je oublié quelque chose?
Vous devez marquer la classe comme public
car elle fait partie d'un module de framework différent
@IBDesignable public class MyCustomView: UIView {
}
Par défaut, les classes et méthodes seront au niveau d'accès internal
. Si vous souhaitez utiliser ce côté de cet objectif, vous devez le marquer comme public. Alors seulement ce sera la partie de l'interface publique (visible à l'extérieur de la cible)
J'ai rencontré la même erreur après avoir importé mon framework personnalisé A dans un autre projet B, même toutes mes classes étaient publiques.
Je l'ai résolu en changeant les paramètres de construction de mon cadre personnalisé A dans Build Active Architecture uniquement sur Non au lieu de Oui, puis nettoyez la compilation et réimportez à nouveau le cadre après avoir supprimé l'ancien.
Ensuite, tout a été compilé avec succès.