2 つの画面 (MainViewController と AboutViewController) を持つアプリがあります。ユーザーがボタンをクリックすると、別の XIB で定義されている AboutViewController 画面をロードしたいと思います。
単純に思えますが、今日は自分の google-fu が見つからないようです。どうやってこれをやってのけるのですか?
を呼び出すときは、 のシノニムである[AboutViewController init]
の何らかの形式を呼び出すことが期待されます。これが発生すると、View Controller は (あなたの場合) という名前の nib ファイルを自動的に探します。そのファイルが見つかった場合は、その内容がビュー コントローラーに読み込まれます。[super init]
[UIViewController init]
AboutViewController.xib
したがって、基本的に必要なことは、View Controller を初期化し、関連する nib ファイルと同じ名前であることを確認することだけです。
別の名前のnibファイルをView Controllerにロードしたい場合は、initWithNibName:bundle:
好きなnibファイルの名前で明示的に呼び出すことができます。
標準の init (同名の nib ファイルを使用) が機能しない場合は、確認できることがいくつかあります。
UIViewController
サブクラスの init メソッドも呼び出します[super init]
UIViewController
サブクラスの init メソッドを呼び出していますバージョン情報画面では、おそらくビューを表示してから閉じたいだけでしょう。したがって、まったく新しいView Controllerを使用するのではなく、現在のビューをカバーすることができます.
あなたが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
NSBundle loadNibNamed: