4

モジュール/フレームワークからInterface BuilderでカスタムUIクラスを使用すると、すべてが完璧に機能します。しかし、私は私のプロジェクトでこのクラスの拡張を記述し、カスタムクラスを設定すると(Interface Builderで)、Interface Builderはカスタムクラスのモジュールを私のプロジェクトに設定します。私はコード内でこのカスタムクラスを使用しようとすると、Xcodeは言う:インターフェイスビルダーのカスタムクラスのモジュールが正しくありません

"Unknown class _TtC9*modulename*18*MyCustomLabel* in Interface Builder file." 

例:

  • TTTAttributedLabelは独立したモジュールとして新しいプロジェクトに追加(またはcocoapodsを投げます)。
  • 単純なUILabelをストーリーボードに追加し、カスタムクラスをTTTAttributedLabelとして設定します。
  • アウトレットを追加してこのラベルをコード化して印刷します(NSLog)。

XcodeはTTTAttributedLabelと記述します。

  • はTTTAttributedLabel
extension TTTAttributedLabel{ } 
  • 削除し、Interface Builderでラベルの再カスタムクラスを設定するために、空の拡張子を追加します。
  • ラベル(NSLog)を印刷します。

Xcodeは警告メッセージを書き、私たちのラベルはUILabelです。

これはInterface Builderのバグですか、モジュールの拡張の前に何かを書く必要がありますか?

情報:迅速、xcode6.3-7.3

答えて

2

私は同じ問題を見ています、私はしかし、回避策を発見したように見えます。

このバグを回避するには、拡張機能を作成するときにモジュール名を含むクラスのフルネームを指定する必要があります。したがって、それは次のようになります。

extension TTTAttributedLabel. TTTAttributedLabel { } 
関連する問題