私はこの主題に関して多くの質問があることを知っていますが、私はそれらのほとんどを試みて、成功せずにそれを理解しようとしました。
問題:最初は、アシスタントエディターからクラスを追加できなかったため、カスタムクラスがそれを取得しなかった。
現在、ボタン、ビューなどをコンセントに接続しようとしています。接続されているように見えますが、アプリを実行してそのView Controllerを開くと、アプリがクラッシュし、「Interface Builder fileのUnknown class xxx」というデバッガが出力されます。 「このクラスは、キーbtnMenuのキー値コーディングに準拠していません。」
私はチェックしました:
Macを再起動しようとしても、もちろん成功しませんでした。
誰でもここで光を遮ることができますか?ありがとう。
UIViewControllerサブクラス(Xcode 9ベータ2およびSwift 4)を使用)でこの問題が発生したばかりで、ソリューションはIBでカスタムクラスを設定する「ターゲットから継承」をチェックすることでした。
ビューがたまたま.bundle
ファイル(フレームワーク/静的ライブラリなど)を別のターゲットにコピーする場合、xib/storyboardクラスをホストしているターゲットから継承するのではなく、各xib/storyboardクラスに明示的なモジュールターゲットを設定する必要があります。
クラスをViewControllerに割り当てようとしている場合は、作成したクラスがUIViewControllerを継承していることを確認してください。 xCodeがクラスを認識しない唯一の理由は、それが異なるタイプのインスタンスである場合、たとえばUITableViewControllerタイプである可能性があることです。
最初にクラスの継承を確認してください。
UIViewがフレームワーク内にある、テストしていたカスタムUIViewでこの問題が発生しました。シンプルなアプリを作成し、ストーリーボードのデフォルトのViewControllerにUIViewを作成し、そのクラスをMyCustomViewに設定しました。アプリの起動時に、常に「インターフェイスビルダーの不明なクラス」エラーが発生しました。フレームワークをインポートし、ビルドされた製品にフレームワークがあることを確認しました。
問題は、テストアプリのコードが実際にフレームワークを使用しなかったことです。ストーリーボードがそれを参照していても、ロードされなかったと思います。テストアプリのコードに[MyCustomView load];
を追加すると、すべて機能しました。
Framework_AがFramework_Bに依存し、クラスがFramework_Bから派生するまで、@ Anthony Scottが言ったことは真実です。次に、チェックボックスを選択解除し、指定されたクラスを含むモジュールを提供する必要があります。ところで質問をありがとう。他のフレームワークにCommonsフレームワークを使用していますが、これを実現するのに役立ちました;)カスタムCocoa Touchフレームワークを開発している人にとって、これは役に立ちます。
クラスファイルを作成したときに誤ってBase.lprojフォルダーに保存したため、このエラーが発生しました。
Project Navigatorでファイルを右クリックし、その参照を削除して、エラーを修正しました。その後、Finderを介してファイルを正しいフォルダーに移動しました。次に、Project Navigatorでメイングループを右クリックし、Add Files to "GroupName"...
とクラスを選択し、Add
ボタンをクリックしました。
その後、エラーはなくなりました。
わかりましたので、どのように、なぜわからないのですが、私は(もう一度)以前に試したことをしました:
今ではXcodeが私のクラスを知っているようです....私はまだ何が問題だったのか分かりませんが、リンカーと関係があると思います。
カスタムクラスを使用してView Controllerをインスタンス化する必要があります。それがなければ、エラーが発生する可能性があります。
self.storyboard!.instantiateViewController(withIdentifier: "namePage") as! EmailAndPassword
クラスの名前を確認してください。プロパティインスペクターでViewControllerを割り当てたクラスに対応していることを確認してください。
これは役に立たなかった。私の問題は、カスタムストーリーボードを作成し、カスタムクラスを追加したことです。しかし、自動生成されたメインストーリーボードから初期ビューコントローラーの矢印を取得するのを忘れ、初期のストーリーボードをカスタムストーリーボードに変更して修正しました。