私の iPhone アプリはタブ バー ベースですが、タブ バー コントローラー ビューを完全に切り替えて、ウィンドウ内のすべてを別の XIB ファイルのビューに置き換えるアクションを起動したいと考えています。これはアプリケーションデリゲートで行う必要があると思いますが (これは「チーフ」クラスであるため)、そこからの正しい方法がわかりません。私がやろうとしていることを誰かが知っていますか?
前もって感謝します!
私の iPhone アプリはタブ バー ベースですが、タブ バー コントローラー ビューを完全に切り替えて、ウィンドウ内のすべてを別の XIB ファイルのビューに置き換えるアクションを起動したいと考えています。これはアプリケーションデリゲートで行う必要があると思いますが (これは「チーフ」クラスであるため)、そこからの正しい方法がわかりません。私がやろうとしていることを誰かが知っていますか?
前もって感謝します!
みんなありがとう!ニック、それは私が必要としていたコードです。誰かがこれを便利だと思った場合に備えて、アニメーションを追加してビューを切り替えるために使用したコードを次に示します。これをアプリ デリゲートのメソッドに入れるだけです。
AnotherViewController *anotherViewController = [[AnotherViewController alloc] initWithNibName:@"AnotherView" bundle:nil];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1.0];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.window cache:YES];
[[[window subviews] objectAtIndex:0] removeFromSuperview];
[window addSubview:[anotherViewController view]];
[UIView commitAnimations];
タブ ビュー コントローラには、 などのアクション メソッドがあり、そのメソッドはなど-(IBAction)onChangeView
の のメソッドを呼び出します。[[UIApplication sharedApplicaton] delegate]
-(void)toggleScreen
-(IBAction)onChangeView:(id)sender
{
MyAppDelegate *delegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
[delegate toggleScreen];
}
次に、アプリのデリゲート メソッドで次のようにします。
-(void)toggleScreen
{
[[[window subviews] objectAtIndex:0] removeFromSuperview];
[window addSubview:otherView];
}
ただし、トランジションが必要な場合は異なる場合があります。
アプリのデリゲートまでずっと行く必要はありません。既存のビューとコントローラーを簡単に削除し、新しいビューを追加できます。それは本当にあなたが何をしているかに依存します。たとえば、既存のビュー構造を一時的に脇に置いて、まったく別のものを使用し、必要に応じて元のスキームに戻すことができます (ただし、ユーザー エクスペリエンスについてはわかりません)。
私のアプリでは、通常、ルート ビュー コントローラーを使用するか、メイン ウィンドウを使用してビューの追加と削除を行います。一部のビューは、他のビューを自分自身に追加したり、別のビューをルートビューまたはメイン ウィンドウに移行したりします。一部のビューは閉じて、下のビューが表示されます。オプションは無限であり、ニーズとアーキテクチャによって異なります。