0

アプリケーションにEDStarRatingを統合しました。1つのビューコントローラーで正常に動作しています。しかし、奇妙な問題は、別のView Controllerで動作していないことです。

この問題に関連するほとんどすべての Google 質問を検索しましたが、何も機能していません。

EDStarRatingもう一度追加したアプリケーションから削除しました。また、カスタム クラスのドロップダウン リストにも表示されません。ビルドフェーズをチェックインしましたが、そこにあります。

もう1つの奇妙なことは、カスタムクラスのドロップダウンに表示されていないことですが、1つのView Controllerで問題なく動作しています。同じことを別のView Controllerに適用しようとすると、エラーが発生します。

Unknown class _MyApplication14MYEDStarRating in Interface Builder file.

助けてくれてありがとう

4

1 に答える 1

0

Swiftで動作するView Controllerと動作しないView Controllerの両方を書いていますか?Objective-C クラスのモジュールがマングルされたクラス名を取得していることは、このバグの形式に遭遇していることを示唆しています。

Objective-C クラスは、Interface Builder で Swift クラスとして解釈されます

実際の結果: アウトレットは Swift クラスを参照します。名前は App モジュール名でマングルされているため、そのクラスのインスタンスに解決できません。

その結果、インターフェイス ビルダーに元のクラスを持つサブビューが作成されます。「View」からドラッグした場合は UIView のインスタンスになり、「ImageView」からドラッグした場合は UIImageView のインスタンスになります。

私がお勧めするのは、ストーリーボードのソースを見て (右クリック、[名前を付けて開く] > [ソース コード])、customClass機能するインスタンスから機能しないインスタンスに手動でコピーすることです。それらが異なると仮定すると、Interface Builder は混乱しただけです。それらが変わらない場合は、もっと微妙な Swift/Objective-C ブリッジングの問題があります。おそらく、Swift で EDStarRating を書き直すだけで、実際にそれを理解するよりも速くなるでしょう。

于 2016-05-14T13:31:45.183 に答える