Swiftプロジェクトがあり、UIView
のカスタムサブクラスを持つフレームワークターゲットを追加したので、Xcode 6内のInterface Builderで新しいライブビューを使用できます。プロジェクトのUIViewController
サブクラスに@IBOutlet
を追加するには、 "未宣言のタイプ 'MyCustomView'の使用"を取得しますエラーが発生し、プロジェクトをビルドできません。
UIViewControllerサブクラスのコードは次のとおりです。
import UIKit
import MyCustomFramework
class MyViewController: UIViewController {
@IBOutlet var myCustomView: MyCustomView?
}
そして、これは「MyCustomFramework」ターゲット内の「MyCustomView.Swift」がどのように見えるかです:
import UIKit
@IBDesignable class MyCustomView: UIView {
@IBOutlet var imageView: UIImageView?
init(coder aDecoder: NSCoder!) {
super.init(coder: aDecoder)
}
}
誰が私が忘れたことを知っていますか?間違った方法でインポートしましたか?私は何か見落としてますか?
クラスは異なるフレームワークモジュールの一部であるため、public
としてマークする必要があります。
@IBDesignable public class MyCustomView: UIView {
}
デフォルトでは、クラスとメソッドはinternal
アクセスレベルになります。そのターゲットの外側を使用する場合は、パブリックとしてマークする必要があります。次に、それだけがパブリックインターフェイスの一部になります(ターゲットの外部に表示されます)
カスタムフレームワークAを別のプロジェクトBにインポートした後、クラスがすべてパブリックであっても、同じエラーに直面しました。
Build Active ArchitectureのカスタムフレームワークAのビルド設定をYesではなくNoに変更し、クリーンコンパイルし、古いフレームワークを削除した後、フレームワークを再インポートすることで解決しました。
その後、すべてが正常にコンパイルされました。