可以在一个ViewController呈现模态使用NavigationController的工具栏

问题描述:

我试图从我的导航控制器层次结构中的视图控制器模态地呈现一个UITableViewController。模态视图应显示一个工具栏。可以在一个ViewController呈现模态使用NavigationController的工具栏

导航控制器的管理工具栏可以在模态显示的视图控制器中使用,还是应该为这些工具栏实现我自己的工具栏?

  • 如果我以[self.navigationController presentModalViewController:filterVC animated:YES];模式显示控制器,则不显示工具栏。
  • 如果我推控制器:[self.navigationController pushViewController:filterVC animated:YES];显示工具栏。

这里是我从我的UITableViewController的init方法运行的方法。

-(void)configureToolBar { 

    [self.navigationController setToolbarHidden:NO animated:YES]; 

    //ToolbarItem Done 
    UIBarButtonItem *doneItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone 
                       target:self 
                       action:@selector(doneButtonPressed)]; 

    //ToolbarItem Cancel 
    UIBarButtonItem *cancelItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel 
                       target:self 
                       action:@selector(cancelButtonPressed)]; 
    //Flexible Space 
    UIBarButtonItem *flexibleItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; 

    self.toolbarItems = [NSArray arrayWithObjects:flexibleItem, cancelItem, doneItem, flexibleItem, nil]; 

    [doneItem release]; 
    [cancelItem release]; 
    [flexibleItem release]; 
} 

不,你不能,因为模态视图控制器成为显示它的视图控制器的子视图,而此视图控制器是导航控制器的子视图(即,模式视图与NavigationController的层次结构没有连接)。但是,您可以将导航控制器作为模式视图控制器呈现,因此您可以将自定义导航栏按钮传递给它。

你必须嵌入一个新的UINavigationController内的VC,并重新设置工具栏项目,或者你只需​​添加一个UIToolbar到您的VC的底部。