再利用性の高い値を持つかなり汎用的なUIViewオブジェクトであることを考えると、複数のView Controllerで再利用したいUIViewがあるとします(UITextField
またはUISegmentedControl
オブジェクト)。 Interface Builderを使用してXIBを作成するのではなく、UIViewをコードで記述した場合、このUIViewを再利用するほうがずっと簡単です。私はUIViewのは、コードで書かれているならば、私は単純に任意のビューコントローラのそれのUIViewの新しいインスタンスを初期化することができますので、この結論に達した:コードベースのUIViewをXIBと比較して再利用
MyGreatReusableView *greatReusableView = [[MyGreatReusableView alloc] initWithFrame:CGRectMake(...)];
...そして直接そのUIViewの特性や属性にアクセスなどのストックUIViewコントロールのように、.text
、.textColor
などのプロパティがあります。
ただし、UIViewをXIBとして作成する場合は、XIBのViewオブジェクトのFile所有者またはIBOutletのいずれかを介して特定のView Controllerに接続する必要があります。そのため、ビューコントローラ。さらに、そのビューコントローラに接続されているIBOutletを使用して、XIBのコントロールのプロパティにのみアクセスできます。
私はXIBファイルに関して何かを完全に誤解していると思っています。これはかなり制限されているようです。誰かが複数のView ControllerでXIBファイルを再利用できるかどうかを明確にすることができれば、コードベースのソリューションとXIBベースのソリューションの例を提供することができます。
ありがとうございました!
あなたのメッセージをありがとうございます。ビューコントローラを作成していて、そのコントローラのビューコンセントをあなたのXIBビューに設定するだけで、コード内のビューコントローラの.viewプロパティにアクセスできます。言い換えれば、ビューコントローラ自体は何もしませんか?私はちょうどこれが非常にエレガントで効率的な解決策ではないように思えます。コードでUIViewを作成すると、UIViewControllerを使用する必要がなくなり、UIViewを直接初期化できます。 – Skoota
これは正しいです。私は最小の非効率性のために睡眠を失うことはありません - それは最適化が必要な厳しいコードパスではありません(私のコードでは、少なくとも)。私はこれもAppleが推奨する方法だと考えています。 – MrAnonymous