1

UIViewのサブビューであるカスタムUICustomViewを作成しています。デリゲートとデータソースを要求するカスタム指定のイニシャライザーを作成できます。ただし、これは、コントロールコンシューマーがプログラムでコントロールを作成する場合にのみ呼び出されます。

ただし、基本的なレイアウトサポートを提供したいと思います。空のUIViewを任意のNIBファイルに配置してから、IdentityInspectorでそのクラスをUICustomViewに変更できるはずです。他のストックAppleコントロールをペン先に配置できるのと同じように。

しかし、どうすれば消費者にデリゲートとデータソースを提供させることができるのでしょうか。

4

4 に答える 4

1

残念ながら、nibファイルからカスタム初期化子を使用する方法はありません。最も一般的には、データソースとデリゲートを必要とするビューは、ビュークラスのIBOutletプロパティを使用して接続されるか、ビューがレンダリングされる前にそれらのプロパティがビューコントローラで設定されます。

コンシューマーにデリゲートとデータソースを提供するように強制したい場合は、いつでも-viewDidLoadメソッドにアサーションを入れて、それらが接続されていることを確認できます(そして、そこにいる間に適切なプロトコルを処理します)。

于 2013-03-25T22:55:32.090 に答える
1

私があなたの質問を正しく理解していれば、initWithCoder:を使用してあなたが望むことをすることができます。それは、xibまたはストーリーボードから出てくるビューに対して呼び出されます。

于 2013-03-25T23:26:58.640 に答える
0

@gaigeが言ったように、dataSourceとdelegateのカスタムビュークラスでIBOutletプロパティを取得するだけです。また、プログラムで作成するときにこれらの値を設定するための指定された初期化子を提供できます。アウトレットのプロパティがある場合は、通常のTableViewと同じように、InterfaceBuilderでそれらを接続できます。

于 2013-03-25T23:04:57.347 に答える
0

問題を解決するための最も一般的で迅速な方法は、viewDidLoadメソッドをカスタマイズすることだと思います。ビューに関連付けられたコントローラーのviewdidloadメソッドでクラスのプロパティを初期化します。

于 2013-03-25T23:11:50.260 に答える