可以在一个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的底部。