所以我有一个带有表视图的根视图。我像这样显示工具栏:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.navigationController.toolbarHidden = NO;
}
我实现了setToolbarItems方法:
- (void)setToolbarItems:(NSArray *)toolbarItems animated:(BOOL)animated
{
UIBarButtonItem *buttonItem;
buttonItem = [[UIBarButtonItem alloc] initWithTitle:@"Hello" style:UIBarButtonItemStyleDone target:self action:@selector(goBack:)];
self.navigationController.toolbarItems = [ NSArray arrayWithObject: buttonItem ];
}
结果是一个空的tolbar。为什么呢?
答案 0 :(得分:1)
来自文档:
toolbarItems 与视图控制器关联的工具栏项。
@property(nonatomic,retain)NSArray * toolbarItems 讨论 此属性包含UIBarButtonItem对象的数组,并且与> UINavigationController对象一起工作。如果此视图控制器已嵌入导航控制器界面内,并且导航>控制器显示工具栏,则此属性将标识要在>该工具栏中显示的项目。
您可以显式设置此属性的值,也可以使用> setToolbarItems:animated:方法为可见的>工具栏项集更改设置动画。
换句话说,尝试通过实际的视图控制器访问它,而不是它的导航控制器:
self.toolbarItems = [ NSArray arrayWithObject: buttonItem ];
答案 1 :(得分:1)
但谁调用你的setToolbarItems实现?
你应该在你自己的视图上调用 setToolbarItems,而不是重新实现它。然后,NavigationController将在实例变量中找到它们并渲染它们。
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.navigationController.toolbarHidden = NO;
UIBarButtonItem *buttonItem;
buttonItem = [[UIBarButtonItem alloc] initWithTitle:@"Hello" style:UIBarButtonItemStyleDone target:self action:@selector(goBack:)];
[self setToolbarItems: [ NSArray arrayWithObject: buttonItem ]];
}