私はiOSアプリケーションを開発しています。私はコントローラーを持っています:iPhonePopUpController、このコントローラーにはこの画像のようなxibがあります:
私の質問は、このコントローラーに他のxibを追加して、必要なときにロードすることはできますか、それとも2番目のxibをロードするために2番目のコントローラーを作成する必要がありますか?
私はiOSアプリケーションを開発しています。私はコントローラーを持っています:iPhonePopUpController、このコントローラーにはこの画像のようなxibがあります:
私の質問は、このコントローラーに他のxibを追加して、必要なときにロードすることはできますか、それとも2番目のxibをロードするために2番目のコントローラーを作成する必要がありますか?
次を使用して、XIBから何でもロードできます。
[[NSBundle mainBundle] loadNibNamed:@"YourOtherXIB.xib" owner:someObjectThatWillTakeThePlaceOfFilesOwner options:0]
この行は、XIBYourOtherXIB.xib
にあるオブジェクトのインスタンスを作成することによって名前が付けられたXIBをアーカイブ解除し、XIBで定義したすべてのアウトレットとアクションを接続して、最上位オブジェクトのリストを返します。
ファイルの所有者がであるXIBを作成する場合、通常は次のようなコードを使用してUIViewController
初期化します。UIViewController
UIViewController* vc = [[[UIViewController alloc] initWithNibName:nibName bundle:bundle] autorelease];
このコードが基本的に内部で行うことは、を格納し、nibName
内部bundle
プロパティで提供することです。ビューをロードする必要がある場合(特に、初めて画面に表示する必要がある場合)、次のようなものを使用してXIBからビューをロードします。上で引用した行:
[bundle loadNibNamed:nibName owner:self options:0];
XIBのビューを'sのIBOutlet(この場合はview
引数として渡されます。つまりそれ自体)に接続すると、のプロパティには、アーカイブされたばかりのビューが入力されます。 XIB。そして、それがXIBファイルからビューをロードする方法です。File's Owner
self
UIViewController
view
UIViewController
UIViewController
ただし、もちろん、独自のクラスでも同じことができ、ファイルの所有者がである必要はありませんUIViewController
。ファイルの所有者をニーズに合ったクラスにし、このクラスからカスタムIBOutletを公開して、XIB内のオブジェクトに接続するだけです。
MyCustomClass
を宣言するクラスを持つことができますIBOutlet UIView* myOtherView;
。File's Owner
XIBで自分のクラスをクラスに定義してから、アウトレットをビューにMyCustomClass
バインドしてXIBからロードします。myOtherView
次に、コードで、のインスタンスを作成し、このインスタンスをパラメーターとして渡しMyCustomClass
て上記のメソッドを使用しますloadNibNamed:owner:options:
MyCustomClass
owner
UIViewController
、プライマリXIBをロードしたものを再利用して、セカンダリXIBから他のビューをロードすることもできIBOutlet UIView* otherView
ますUIViewController
。サブクラスにを追加するだけです。最初のXIBでは、view
IBOutletをプライマリビューに接続しますが、otherView
IBOutletは接続しないままにします。2番目のXIBでは、otherView
IBOutletを他のビューに接続しますが、IBOutletは接続しないままにしますview
。UIViewController
最初のXIBをロードすると、view
プロパティはXIBからロードされたビューに設定されます。次にotherView
、後で他のXIBから遅延読み込みを行う場合は、nib名および所有者としてloadNibNamed:owner:options
を呼び出します。はアーカイブ解除され、プロパティはそのロードされたビューで埋められます。OtherXIB.xib
self
OtherXIB
otherView