いくつか質問があります:
1)「独自の UITabBarController を作成した」と言うとき、UITabBarController をサブクラス化したということですか?
2) モーダル ビュー コントローラーを表示するための呼び出しはどのように行われますか? モーダルView Controllerを表示するための呼び出しを行うボタンまたはタップされているものはありますか?
コントローラーは「メインウィンドウにある」と言い、モーダルビューを表示すると「タブバーコントローラービューを前面に表示する」と言います。これは私を混乱させます。ビュー コントローラは、タブ バー コントローラに「属する」必要があります。
私は小さなプロジェクトを作成し、それを機能させたので、私がしたことは次のとおりです。
1) UITabBarController のサブクラスを作成しました。
@interface MyTabBarController : UITabBarController
{
}
- (IBAction)presentModalView:(id)sender;
- (void)dismissModalview;
@end
@implementation MyTabBarController
- (IBAction)presentModalView:(id)sender
{
MyModalViewController* myModalView = [[MyModalViewController alloc] initWithNibName:@"ModalView" bundle:nil];
[myModalView setTbc:self];
[self presentModalViewController:myModalView animated:YES];
}
- (void)dismissModalview;
{
[self dismissModalViewControllerAnimated:YES];
}
@end
2) 次に、モーダル ビュー コントローラー用に、UIViewController のサブクラスを作成しました。
@interface MyModalViewController : UIViewController
{
MyTabBarController* tbc;
}
@property (retain) MyTabBarController* tbc;
- (IBAction)returnToTabBar:(id)sender;
@end
@implementation MyModalViewController
@synthesize tbc;
- (IBAction)returnToTabBar:(id)sender;
{
[tbc dismissModalview];
}
@end
3) タブ バー コントローラーを MainWindow.xib にドラッグし、そのファイルの所有者を MyTabBarController に設定し、ビュー コントローラーを両方のタブに追加しました (インスペクターを使用してそれぞれの背景色を異なる色に設定しました)。2 番目のタブのビュー コントローラーにボタンを追加し、そのターゲットを MyTabBarController のアクション「presentModalView:」に設定しました。
4) ModalView というビューを含む新しい xib を作成し、そのファイルの所有者を MyModalViewController に設定しました。ビューの背景色を上記の 2 つとは異なる色に設定し、ビューにボタンを追加しました。ボタンのターゲットを MyModalviewController のアクション「returnToTabBar:」に設定します。
明らかに、アプリ デリゲートのウィンドウのサブビューにタブ バー ビューを追加する必要がありました。これは私にとってはうまくいき、2番目のタブにいるときにモーダルView Controllerを表示し、それを閉じるとタブバーコントローラーの2番目のタブに戻りました。
これが役立つことを願っています!