web-dev-qa-db-ja.com

Import Swift Swiftのフレームワーク: "未宣言の型 'MyCustomView'の使用"

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)
    }
}

誰が私が忘れたことを知っていますか?間違った方法でインポートしましたか?私は何か見落としてますか?

30
Dschee

クラスは異なるフレームワークモジュールの一部であるため、publicとしてマークする必要があります。

@IBDesignable public class MyCustomView: UIView {

}

デフォルトでは、クラスとメソッドはinternalアクセスレベルになります。そのターゲットの外側を使用する場合は、パブリックとしてマークする必要があります。次に、それだけがパブリックインターフェイスの一部になります(ターゲットの外部に表示されます)

36
Anil Varghese

カスタムフレームワークAを別のプロジェクトBにインポートした後、クラスがすべてパブリックであっても、同じエラーに直面しました。

Build Active ArchitectureのカスタムフレームワークAのビルド設定をYesではなくNoに変更し、クリーンコンパイルし、古いフレームワークを削除した後、フレームワークを再インポートすることで解決しました。

その後、すべてが正常にコンパイルされました。

1
Hany Sakr