如何从navigationController中删除子视图?

问题描述:

我添加了一个工具栏使用此代码:如何从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]; 
} 
 

但是当我更改使用导航控制器工具栏在那里停留的观点...

我怎么能删除子视图?

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