web-dev-qa-db-fra.com

Importer Swift framework dans Swift: "Utilisation du type non déclaré 'MyCustomView'"

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?

30
Dschee

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)

36
Anil Varghese

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.

1
Hany Sakr