2

4 つのナビゲーション コントローラーを作成し、それらを UITabBar に追加すると、次のようになります。

// Create the root view controllers for the tab bar
firstViewController = [[FirstViewController alloc] init];
secondViewController = [[SecondViewController alloc] init];
thirdViewController = [[ThirdViewController alloc] init];
fourthViewController = [[FourthViewController alloc] init];

// Configure the tab bar
UITabBarController *tabBarController = [[[UITabBarController alloc] init] autorelease];
tabBarController.viewControllers = @[
[[[UINavigationController alloc] initWithRootViewController:firstViewController] autorelease],
[[[UINavigationController alloc] initWithRootViewController:secondViewController] autorelease],
[[[UINavigationController alloc] initWithRootViewController:thirdViewController] autorelease],
[[[UINavigationController alloc] initWithRootViewController:fourthViewController] autorelease]
];
tabBarController.selectedIndex = 1;

self.window.rootViewController = tabBarController;

起動時に最初に表示される UINavigationController (この場合はインデックス 1) に奇妙な「ポップ」アニメーションが表示されるという問題があります。ナビゲーションバーのタイトルなどはちゃんとアニメーションしますが、ナビゲーションコントローラーの内容はアニメーションなしで変化します。

別のタブを選択してから元のタブに戻ると、問題が修正されます。

また、タブ バーを方程式から除外するように設定self.window.rootViewControllerする[[[UINavigationController alloc] initWithRootViewController:secondViewController] autorelease]と、ナビゲーション コントローラーは問題なく動作します。

何かご意見は?

4

3 に答える 3

1

私は同じ問題を抱えていましたが、私が見つけた唯一の解決策はこの小さなハックです:

これを最初の UITabBarController ビュー コントローラーの "(void)viewWillAppear" メソッドに入れます。

     UITabBarController * controller = self.tabBarController;
     //Create this BOOL variable on your class and set it to YES on viewDidLoad
     if(firstTimeViewLoaded) {    
        // Simulate a click on other tab item then switch back instantly.
        [controller setSelectedViewController:controller.viewControllers[1]];
        [controller setSelectedViewController:controller.viewControllers[0]];
     }
     firstTimeViewLoaded = NO;
于 2014-09-24T12:39:50.673 に答える
0
 // Create the root view controllers for the tab bar
firstViewController = [[FirstViewController alloc] init];
secondViewController = [[SecondViewController alloc] init];
thirdViewController = [[ThirdViewController alloc] init];
fourthViewController = [[FourthViewController alloc] init];

   UINavigationController *myNavigationController;
    UITabBarController *myTabBarController = [[UITabBarController alloc] init];

    NSMutableArray *myTabs = [[NSMutableArray alloc] init];

    myNavigationController = [[UINavigationController alloc] initWithRootViewController:firstViewController];
    [myTabs addObject:myNavigationController];
//Release
[myNavigationController release];
//Second view
    myNavigationController = [[UINavigationController alloc] initWithRootViewController:secondViewController];
    [myTabs addObject:myNavigationController];
[myNavigationController release];
//And so on with the third and fourth view controller
//...

[tabBarController setViewControllers:myTabs];
//Add the tab bar controller view to the main view
[self.window addSubview:tabBarController.view];
于 2013-01-09T17:32:07.150 に答える