2012-12-02 56 views
1

我在尝试编写一个选项卡式应用程序,其中每个选项卡都是导航控制器。此选项卡栏出现在导航控制器的每个视图中,因为它是在每个视图上推断的。用UIToolbar以编程方式替换UITabBar

我想用一个工具栏替换一个详细视图上的这个标签栏,上面有几个按钮。

我试图在详细视图的viewDidLoad下面的代码:方法

self.navigationController.toolbarHidden = NO; 
self.navigationController.toolbar.barStyle = UIBarStyleBlackTranslucent; 

UIBarButtonItem *accept = [[UIBarButtonItem alloc] initWithTitle:@"Accept" 
                   style:UIBarButtonItemStyleBordered 
                   target:self 
                   action:nil]; 

UIBarButtonItem *decline = [[UIBarButtonItem alloc] initWithTitle:@"Decline" 
                   style:UIBarButtonItemStyleBordered 
                   target:self 
                   action:nil]; 
NSArray *items = [NSArray arrayWithObjects:accept, decline, nil]; 
[self.navigationController.toolbar setItems:items animated:YES]; 

// code suggested 
[self.view addSubview:self.navigationController.toolbar]; 

它仍然没有露面。虽然隐藏标签栏现在添加下面的行中显示详细视图的视图: -

theDetailTableViewController.hidesBottomBarWhenPushed = YES; 

我错过了什么吗?

回答

0

我通常在viewWillAppear或viewDidAppear方法中将toolbarHidden = YES或NO,如适用。我不确定这是为什么它不适合你,但是当你回到展示视图时,你需要解决这个问题。

如果你没有解决它,当你回来时,工具栏仍然可见。

+0

干杯朋友。这工作。一旦查看出现,我使用viewDidAppear来显示工具栏。然后我用viewWillDisappear来隐藏它,因为它消失了。 –

0

无论你是从推你detailViewController,这样做是为了隐藏标签栏的详细视图:

DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil]; 
detailViewController.hidesBottomBarWhenPushed = YES; 
[self.navigationController detailViewController animated:YES]; 

,并在您的详细视图,只需添加工具栏作为一个子视图到的DetailView。

+0

感谢您的帮助@calvinBhai我已经使用您的建议更新了我的问题。标签栏已消失,但工具栏仍未显示。 –

相关问题