0

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

- (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 ];
}

结果是一个空的工具栏。为什么?

在此处输入图像描述

4

2 回答 2

1

从文档:

toolbarItems 与视图控制器关联的工具栏项。

@property(nonatomic, retain) NSArray *toolbarItems Discussion 此属性包含 UIBarButtonItem 对象的数组,并与 UINavigationController 对象结合使用。如果此视图控制器 > 嵌入在导航控制器界面中,并且导航 > 控制器显示工具栏,则此属性标识要在 > 该工具栏中显示的项目。

您可以显式设置此属性的值或使用 >setToolbarItems:animated: 方法对可见的 >toolbar 项集的更改进行动画处理。

换句话说,尝试通过实际的视图控制器访问它,而不是像这样的导航控制器:

self.toolbarItems = [ NSArray arrayWithObject: buttonItem ];
于 2012-04-08T00:26:08.630 回答
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 ]];
} 
于 2012-04-08T00:29:40.393 回答