无法向表视图工具栏添加按钮

时间:2012-04-08 00:17:32

标签: iphone objective-c ios xcode

所以我有一个带有表视图的根视图。我像这样显示工具栏:

- (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。为什么呢?

enter image description here

2 个答案:

答案 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 ]];
}