私はこれに従って@IBDesignable UIViewのサブクラスを作成しようとしました(リンク) チュートリアル。最初のカスタム ビューは問題なく動作します。しかし、別のカスタム ビューを作成しようとすると、エラーが発生します。最初はfailed to update auto layout status: the agent crashed
と が表示されましたFailed to render instance of ...
。これらのエラーが発生しても、なんとかプロジェクトをビルドして実行できるようになりましたが、その後、新しいエラー ( EXC_BAD_ACCESS ...
on line ) が表示されますlet view = nib.instantiateWithOwner(self, options: nil)[0] as! UIView
。全体の手順は次のとおりです。
func loadViewFromNib() -> UIView {
let bundle = NSBundle(forClass: self.dynamicType)
let nib = UINib(nibName: "advancedCellView", bundle: bundle)
let view = nib.instantiateWithOwner(self, options: nil)[0] as! UIView
return view
}
最初のカスタム UIView では問題はありません。同じコードを使用します。
何かアイデアはありますか? ありがとうございます
ベストアンサー1
投稿した方法loadViewFromNib()
は問題なさそうです。バンドルを正しく取得し、ペン先名を文字列リテラルとして指定しているので、ペン先が見つかるはずです。他の誰かがコメントしたように、代わりにペン先の設定に問題がある可能性があります。確認すべき点がいくつかあります。
AdvancedCellView
アイデンティティ インスペクターでファイルの所有者カスタム クラスとして設定する必要があります。- モジュールが正しいことも確認してください。通常は空白のままにしておきます。
- ビューのカスタム クラスは設定しないでください。デフォルト (UIView) のままにしておきます。サイドバーに「View」よりもわかりやすい名前が付いている場合は、おそらく間違っています。
- ニブにトップレベルのオブジェクトが 1 つだけあることを確認します。ビュー ツリーを折りたたむと、サイドバーは他のエントリなしで次のようになります。
注意: この回答は、OP がリンクしたチュートリアルに関連しており、ペン先をセットアップする唯一の正しい方法ではありません。