0

UIBarButtonItem私はnavigationItemにカスタムを追加しようとしています。このボタンは、すべてのViewControllerで使用できます。viewDidLoadそのため、それぞれのメソッドに追加する代わりに、viewDidLoadメソッドで呼び出す別のメソッドのアプリケーションDelegateクラスに追加しようとしていますviewDidLoad。これが私のコードです:

 UIImage* image = [UIImage imageNamed:@"some-header-icon.png"];
CGRect frame = CGRectMake(0,0,image.size.width,image.size.height);
UIButton* hellBtn = [[UIButton alloc] initWithFrame:frame];
[hellBtn setBackgroundImage:image forState:UIControlStateNormal];
[hellBtn setShowsTouchWhenHighlighted:NO];
[hellBtn addTarget:self action:@selector(goToHell) forControlEvents:UIControlEventTouchUpInside];

UIBarButtonItem* rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:hellBtn];
[self.nav.navigationController.navigationItem setRightBarButtonItem:rightBarButtonItem];
[hellBtn release];
[rightBarButtonItem release];

viewDidLoadいずれかのviewControllerで同じコードブログを置き換えて変更した場合

[self.nav.navigationController.navigationItem setRightBarButtonItem:rightBarButtonItem];

に:

[self.navigationItem setRightBarButtonItem:rightBarButtonItem];

それは完璧に動作します。なぜですか?

4

2 に答える 2

3

UIViewControllerfor exのサブクラスを作成します。UIViewControllerBase、メソッドをオーバーライドviewDidLoadし、その中に作成して rightBarButtonItem設定します。次に、すべてのコントローラーを継承させますUIViewControllerBase- 簡単な OOP シナリオ。

于 2012-07-03T11:52:56.667 に答える
0

self.nav.navigationControllerなのでnav、これを使用しないでくださいUINavigationController.navigationController

使用するだけ[self.navigationItem setRightBarButtonItem:rightBarButtonItem];

于 2012-07-03T11:58:02.577 に答える