2
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:   (NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.


FirstViewController *fvc = [[FirstViewController alloc] init];
SecondtViewController *svc = [[FirstViewController alloc] init];


//Create UITabBarController
UITabBarController *theTabBarController = [[UITabBarController alloc] init];
NSArray *viewControllers = [NSSArry arrayWithObjects: fvc, svc, nil];
[theTabBarController setViewControllers:viewControllers];


// Create UINavigationController
UINavigationController *theNavigationController = [[UINavigationController         
alloc]initWithRootViewController:theTabBarController];
[[self window] setRootViewController:theNavigationController];


self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}

次に、最初のView Controllerで、2番目のビューにプッシュします

- (IBAction)Page2:(id)sender {
SBHomePageDetailViewController *detailPageViewController =   [[SBHomePageDetailViewController alloc] init];
// Pushing to the stack

[[self navigationController] pushViewController:detailPageViewController animated:YES];
}

UI に 2 番目のビューが表示されるようになりましたが、UITabBarController がありません。戻ると、タブ バー ビューが戻ります。すべての UI 画面でタブ バー コントローラーを常に表示するにはどうすればよいですか?

4

2 に答える 2

0

コードの問題は、次の行で UITabBarController を UINavigationController の rootViewController として初期化しようとすることです。

// Create UINavigationController
UINavigationController *theNavigationController = [[UINavigationController alloc]initWithRootViewController:theTabBarController];

ドキュメントから:

rootViewController: ナビゲーション スタックの一番下にあるビュー コントローラー。このオブジェクトを UITabBarController クラスのインスタンスにすることはできません。

その行を削除してみてください。@rmaddy の提案に従って、各ビュー コントローラーをナビゲーション コントローラーに配置してください。次に、これらのナビゲーション コントローラーをタブ バー コントローラーの VC として設定し、アプリの RootViewController をタブ バー コントローラーに設定します。

FirstViewController *fvc = [[FirstViewController alloc] init];
SecondtViewController *svc = [[SecondtViewController alloc] init];


// Create the first UINavigationController
UINavigationController *firstNavigationController = [[UINavigationController
                                                    alloc]initWithRootViewController:fvc];

// Create the second UINavigationController
UINavigationController *secondNavigationController = [[UINavigationController
                                                    alloc]initWithRootViewController:svc];

//Create UITabBarController
theTabBarController = [[UITabBarController alloc] init];
NSArray *viewControllers = [NSArray arrayWithObjects: firstNavigationController, secondNavigationController, nil];
[theTabBarController setViewControllers:viewControllers];

[[self window] setRootViewController: theTabBarController];
于 2013-11-09T01:46:44.243 に答える