2010-06-09 172 views
1

我添加了一個工具欄使用此代碼:如何從navigationController中刪除子視圖?

 

- (void)viewWillAppear:(BOOL)animated { 
    UIBarButtonItem *yesterday = [[UIBarButtonItem alloc]initWithTitle:@"Yesterday" 
                   style:UIBarButtonItemStyleBordered target:self action:@selector(yesterday:)]; 
    UIBarButtonItem *today = [[UIBarButtonItem alloc]initWithTitle:@"Today" 
                  style:UIBarButtonItemStyleDone target:self action:@selector(today:)]; 
    UIBarButtonItem *tomorrow = [[UIBarButtonItem alloc]initWithTitle:@"Tomorrow" 
                   style:UIBarButtonItemStyleBordered target:self action:@selector(tomorrow:)]; 
    UIBarButtonItem *month = [[UIBarButtonItem alloc]initWithTitle:@"Month" 
                  style:UIBarButtonItemStyleBordered target:self action:@selector(month:)]; 
    NSArray *items = [NSArray arrayWithObjects:yesterday,today,tomorrow,month, nil]; 

    [yesterday release]; 
    [today release]; 
    [tomorrow release]; 
    [month release]; 

    UIToolbar *toolbar = [[UIToolbar alloc] init]; 
    [toolbar sizeToFit]; 
    [toolbar setFrame:CGRectMake(0, 20, 320, 40)]; 
    [toolbar setItems:items]; 
    [self.navigationController.view addSubview:toolbar]; 
} 
 

但是當我更改使用導航控制器工具欄在那裏停留的觀點...

我怎麼能刪除子視圖?

回答

2

UINavigationController有一個內置的工具欄,默認情況下它是隱藏的。您可以使用[navigationController setNavigationBarHidden:animated:];來顯示它。您可能想使用它。然後,在您推送視圖控制器之前,將該視圖控制器的hidesBottomBarWhenPushed屬性設置爲true。

在此實例中,您的工具欄不會消失的原因是您將其添加到navigationController的視圖,該視圖顯示在其控制的其他視圖之上。你可以添加它作爲自我的子視圖。

要回答您的具體問題,但要從任何超級視圖中刪除工具欄,請使用[toolbar removeFromSuperview]。在這種情況下,我會使用內置於導航控制器中的工具欄的更清晰的解決方案。

+0

我已經嘗試使用內置的一個,但它顯示在屏幕的底部,如果我將它移動到屏幕的頂部,它會在底部留下一個空的空間! – 2010-06-09 20:24:55

+0

好吧,那麼你將它添加到錯誤的觀點。您將其添加到navigationController.view,但是您想要的是視圖控制器在導航控制器視圖控制器堆棧頂部控制的視圖。 ......或者,你可能只需要使用'[self addSubview] [[[[[navigationController viewControllers] lastObject] .view addSubview:toolbar];(或它可能是第一個對象, :工具欄];'在這種情況下。 如果您將其添加到該視圖中,則當您推送另一個視圖控制器時,該視圖應該滑過該視圖。 – 2010-06-09 20:32:25

+0

看起來像那些選項不工作4我:S只是如果我添加子視圖與此:[self.navigationController.view addSubview:toolbar]; – 2010-06-09 21:47:24