如何从navigationController中删除子视图?

时间:2010-06-09 20:05:38

标签: iphone uinavigationcontroller toolbar

我添加了一个带有此代码的工具栏:


- (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];
}

但是当我使用导航控制器更改视图时,工具栏会停留在那里......

如何删除该子视图?

1 个答案:

答案 0 :(得分:2)

UINavigationController内置了一个工具栏,默认情况下是隐藏的。您可以使用[navigationController setNavigationBarHidden:animated:];显示它。您可能想要使用它。然后,在推送视图控制器之前,将该视图控制器的hidesBottomBarWhenPushed属性设置为true。

您的工具栏在此实例中不会消失的原因是您将其添加到navigationController的视图中,该视图显示在它控制的其他视图之上。您可以将其添加为自我的子视图。

要回答您的具体问题,要从任何超级视图中删除工具栏,请使用[toolbar removeFromSuperview]。在这种情况下,我会使用更清晰的解决方案,使用内置于导航控制器中的工具栏。

相关问题