2011-03-07 66 views
0

我有一個編程創建的導航控制器來處理UISegmentedControl視圖之間的切換。 (稱爲段導航控制器)帶底部工具欄的UINavigation控制器在視圖開關上丟失UIBarButtonItems

導航控制器有一個底部工具欄,並帶有一些UIBarButtonItems,這些UIBarButtonItems也是以編程方式添加的。爲了處理我有下面的代碼段開關:

- (void)indexDidChangeForSegmentedControl:(UISegmentedControl *) aSegmentedControl { 
NSUInteger index = aSegmentedControl.selectedSegmentIndex; 

if(index == 0) { 
    OneViewController *oneViewController = nil; 

    if((oneViewController = [self.viewControllers objectForKey:@"one"]) == nil) { 
     oneViewController = [[OneViewController alloc] init]; 
     [self.viewControllers setObject:oneViewController forKey:@"one"]; 
     [oneViewController release]; 
    } 
    NSArray *theViewControllers = [NSArray arrayWithObject:oneViewController]; 
    [self.segmentsNavigationController setViewControllers:theViewControllers animated:YES]; 
} 
else if(index == 1) { 
    TwoViewController *twoViewController = nil; 

    if((twoViewController = [self.viewControllers objectForKey:@"two"]) == nil) { 
     twoViewController = [[RelatedArticlesViewController alloc] init]; 
     [self.viewControllers setObject:twoViewController forKey:@"two"]; 
     twoViewController.hidesBottomBarWhenPushed = YES; 

     [twoViewController release]; 
    } 

    NSArray *theViewControllers = [NSArray arrayWithObject:twoViewController];  
    [self.segmentsNavigationController setViewControllers:theViewControllers animated:YES];  
} 

}

所以,最終,當我從一個視圖切換到另一個和背部都是我UIBarButtons在導航控制器的底部欄迷路了。這是爲什麼?難道我做錯了什麼?

回答

1

那麼經過一番搜索後,我意識到我一直在用錯誤的方式使用UINavigationController。

導航控制器的工具欄是內部顯示的導航視圖的一部分,而不是父級的導航視圖的一部分。 (我花了一段時間才弄清楚了這一點!)我在同一個控制器中創建了按鈕,我正在創建segmentsNavigationController,而不是在我應該擁有的oneViewController中。

移動代碼OneViewController和設置工具欄爲:

[self setToolbarItems: [[NSArray alloc] initWithObjects: button1, button2, nil] animated: NO]; 

的伎倆!

相關問題