[XCODE] Nibファイルを複数使って一つの画面を作成する
iPhoneアプリを作成していて、一つのViewでも複数のNib(またはXib)ファイルを使って、
画面を作成したいと思って調べました。
今日はその方法を記載したいと思います。
XCODEでViewを作成すると基本的には、ViewひとつにつきひとつのNibファイルが出来ます。 そんな中、他の画面とか他のiPhoneアプリとかで同じように使いたい画面の要素がある場合に、 Viewのある部分(作り込んだ部分)を共通化したい。
そんなときにNibファイルを用いるとそれが実現出来ます。
以下に手順を示します。
あっあと、今回利用するViewControllerは上図のMultiNibViewControllerです。
読み込んだViewを保持する変数は以下のように定義します。
これは基本的なことなので、簡単ですね(*´∇`*)
次に、Nibファイルを読み込む処理を記述します。こんな感じです。
ここでのポイントは、NSBundleのインスタンスが持つ「loadNibNamed:owner:options:」というメソッドです。 このメソッドで対象のNibファイルとその保持するクラス(ここではself)を指定することで、 self.view1やself.view2にインスタンスが代入されます。
なおここでは読み込んだViewに対して、位置を修正して、Viewに表示しています。
Nibファイルを開いて、FileOwnerに上記のViewControllerクラスを指定します。
また、NibファイルのViewとMultiNibViewControllerのview1との関連付けを行います。 以下例では「View1.xib」での設定例です。
以上で、追加したNibファイルを読み込むことが出来るようになります。
画面のパーツをNibファイルで作れると楽で良いですよね(・∀・)
XCODEでViewを作成すると基本的には、ViewひとつにつきひとつのNibファイルが出来ます。 そんな中、他の画面とか他のiPhoneアプリとかで同じように使いたい画面の要素がある場合に、 Viewのある部分(作り込んだ部分)を共通化したい。
そんなときにNibファイルを用いるとそれが実現出来ます。
以下に手順を示します。
まずは追加で使いたいNibファイルを用意する
XCODEの新規ファイル追加を用いて、Nibファイルを追加します。 今回の場合には、「View1.xib」「View2.xib」を追加しました。あっあと、今回利用するViewControllerは上図のMultiNibViewControllerです。
続いてMultiNibViewControllerに追加したNibファイルを読み込む設定を行う
設定を行う為には、読み込んだViewを保持する変数の定義と、実際に読み込む処理が必要です。読み込んだViewを保持する変数は以下のように定義します。
@interface MultiNibViewController : UIViewController { UIView *view1; UIView *view2; } @property(nonatomic, retain) IBOutletUIView *view1; @property(nonatomic, retain) IBOutletUIView *view2; @end
これは基本的なことなので、簡単ですね(*´∇`*)
次に、Nibファイルを読み込む処理を記述します。こんな感じです。
NSBundle *bundle = [NSBundlemainBundle]; // View1.xibを読み込んで、表示する [bundle loadNibNamed:@"View1" owner:self options:nil]; view1.center = CGPointMake(160, 115); [self.view addSubview:view1]; // View2.xibを読み込む [bundle loadNibNamed:@"View2" owner:self options:nil]; view2.center = CGPointMake(160, 257); [self.view addSubview:view2];
ここでのポイントは、NSBundleのインスタンスが持つ「loadNibNamed:owner:options:」というメソッドです。 このメソッドで対象のNibファイルとその保持するクラス(ここではself)を指定することで、 self.view1やself.view2にインスタンスが代入されます。
なおここでは読み込んだViewに対して、位置を修正して、Viewに表示しています。
追加したNibファイルへの設定
「loadNibNamed:owner:options:」で、指定されているownerや、 Nibファイルで読み込んだViewのインスタンス代入先を指定するする必要があります。Nibファイルを開いて、FileOwnerに上記のViewControllerクラスを指定します。
また、NibファイルのViewとMultiNibViewControllerのview1との関連付けを行います。 以下例では「View1.xib」での設定例です。
以上で、追加したNibファイルを読み込むことが出来るようになります。
最後に
Viewの作成をNibファイルではなくてプログラムでやろうとすると、位置指定とか煩雑な処理が増えて大変。画面のパーツをNibファイルで作れると楽で良いですよね(・∀・)