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

ドキュメントから:

overlayItemsViewControllerに関連付けられているツールバーアイテム。

@property(nonatomic、retain)NSArray * toolbarItemsディスカッションこのプロパティには、UIBarButtonItemオブジェクトの配列が含まれ、UINavigationControllerオブジェクトと組み合わせて機能します。このビューコントローラがナビゲーションコントローラインターフェイス内に埋め込まれていて、ナビゲーションコントローラがツールバーを表示する場合、このプロパティはそのツールバーに表示する項目を識別します。

このプロパティの値を明示的に設定するか、> setToolbarItems:animated:メソッドを使用して、表示されているツールバー項目のセットへの変更をアニメーション化できます。

つまり、次のようなナビゲーションコントローラではなく、実際のViewControllerを介してアクセスしてみてください。

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 に答える