2011-11-28 150 views
3

我使用下面的代碼創建一個導航控制器工具欄:工具欄在導航控制器

[self.navigationController setToolbarHidden:NO]; 

//Create a button 
    NSArray *toolbarItems = [NSArray arrayWithObjects: 
           [[UIBarButtonItem alloc] initWithTitle:@"Help" style:UIBarButtonItemStyleBordered target:self action:@selector(helpButton:)] 
           ,nil]; 

唯一的問題是,該工具欄是可見的,只要有一個導航控制器(多其他視圖)。有沒有辦法只將工具欄限制在一個視圖中?

感謝

回答

4

引述UINavigationController Class Reference

導航工具欄默認是隱藏的,但你可以通過調用您的導航控制器對象的setToolbarHidden:animated:方法顯示它爲您導航界面。如果並非所有視圖控制器都支持工具欄項目,則您的委託對象可以調用此方法在隨後的推送和彈出操作期間切換工具欄的可見性。

因此,爲您的導航控制器設置一個代表。在您委託的navigationController:willShowViewController:animated:,做這樣的事情:

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated 
{ 
    BOOL shouldShowToolbar = (viewController == theViewControllerThatNeedsAToolbar); 
    [navigationController setToolbarHidden:shouldShowToolbar animated:animated]; 
} 
+0

+1正確答案 – Till

+0

@rob mayoff,如何將ViewControllerThatNeedsAToolbar設置爲當前視圖? self.view不起作用。 。 。另外,我也在那裏添加按鈕?最後,我需要呼籲它嗎? –

+0

你需要嘗試一些事情並找出有效的方法。 –

1

如果你稍微修改上面的例子,你可以輕鬆地讓它所以當工具欄項目在當前視圖控制器的viewDidLoad方法設置工具欄會自動顯示:

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated 
{ 
    BOOL shouldHide = [viewController.toolbarItems count] == 0; 
    [navigationController setToolbarHidden:shouldHide animated:animated]; 
} 
相關問題