私は2つの画面(MainViewControllerとAboutViewController)を持つアプリを持っています。ユーザーがボタンをクリックすると、別のXIBで定義されているAboutViewController画面をロードしたいと思います。XIBをロードするには?
シンプルだと思われますが、私は今日私のgoogle-fuを見つけることができません。これをどうやって取り除くのですか?
私は2つの画面(MainViewControllerとAboutViewController)を持つアプリを持っています。ユーザーがボタンをクリックすると、別のXIBで定義されているAboutViewController画面をロードしたいと思います。XIBをロードするには?
シンプルだと思われますが、私は今日私のgoogle-fuを見つけることができません。これをどうやって取り除くのですか?
、[UIViewController init]
の同義語である[super init]
のいくつかのフォームを、呼び出すことが予想されます。これが起こると、あなたのView Controllerは(あなたのケースでは)AboutViewController.xib
と呼ばれるnibファイルを自動的に探します。そのファイルが見つかった場合は、その内容をView Controllerにロードします。
基本的には、View Controllerを初期化して、関連するnibファイルと同じ名前を付けるだけです。
異なる名前のnibファイルをビューコントローラにロードする場合は、明示的にinitWithNibName:bundle:
を呼び出して好きなnibファイルの名前を付けることができます。
標準のinit(同じ名前のnibファイルを持つ)がうまく動作しない場合は、確認できることがいくつかあります。
UIViewController
サブクラスのinitメソッドを呼び出している[super init]
UIViewController
サブクラスのinitメソッドNSBundle loadNibNamed:あなたは[AboutViewController init]
を呼び出すと
[バージョン情報]画面では、ビューを表示してから消したいだけです。したがって、全く新しいビューコントローラを使用するのではなく、現在のビューをカバーできます。あなたは適切なプロパティとIVAR
UIView *aboutUsView;
を持っていると仮定すると
。あなたのビューコントローラで
は行います[[NSBundle mainBundle] loadNibNamed:@"AboutUsView" owner:self options:nil]; // Retains top level items
[self.view addSubview:aboutUsView]; // Retains the view
[aboutUsView release];
ビューを削除するには、ビュー上のボタンに接続されているアクションで言う、実行します。
[aboutUsView removeFromSuperview], aboutUsView = nil; // Releases the view
彼は具体的には、View Controllerとビューではなく、 "MainViewController and AboutViewController"という2つのView Controllerを持っていると言いました。 – mahboudz
正しい。そして、私は具体的には、彼が述べた目標を達成するために両方を必要としないと言いました。 –
これは明白な方法のようです。 – user1432813
私はアイデアXIBsが自動的にロードされなかったましたこのような。ありがとう! – DOOManiac