0
- (void)viewDidLoad
{
    [super viewDidLoad];

    ac = [[AddContacts alloc]init];
    self.navigationController = [[UINavigationController alloc] initWithRootViewController:ac];
    [self.view addSubview:navigationController.view];

    UIBarButtonItem *anotherButton = [[UIBarButtonItem alloc] initWithTitle:@"Show" style:UIBarButtonItemStylePlain target:self action:@selector(refreshPropertyList:)];          
    self.navigationController.navigationItem.rightBarButtonItem = anotherButton;
}

ボタンがナビゲーション コントローラに追加されないのはなぜですか?

4

2 に答える 2

1

UIBarButtonItem、ナビゲーション コントローラではなく、そこに含まれる各ビュー コントローラによって制御されます。それぞれUIViewControllerに異なるボタンを設定できます。試す:

ac = [[AddContacts alloc]init];
UIBarButtonItem *anotherButton = [[UIBarButtonItem alloc] initWithTitle:@"Show" style:UIBarButtonItemStylePlain target:self action:@selector(refreshPropertyList:)];          
ac.navigationItem.rightBarButtonItem = anotherButton;

次に、UINavigationControllerこれまで行ってきたように初期化します。

于 2012-04-30T20:50:09.700 に答える
1

ここには、問題を引き起こす可能性のあるものがいくつかあります。

おそらく主な問題は次の行です。

self.navigationController.navigationItem.rightBarButtonItem = anotherButton;

acあなたが設定したいのは、 View Controllerのナビゲーション項目の右のバーボタン項目だと確信しています。

ac.navigationItem.rightBarButtonItem = anotherButton

ただし、他のいくつかのこと:

  • 2 文字の変数名を使用しないでください。「ac」は非常にあいまいです。「addContacts」はより多くの情報を提供し、「addContactsViewController」はさらに多くの情報を提供します。
  • サブクラスに独自のnavigationControllerプロパティを実装していますか? UIViewControllerこれは、既に持っているnavigationControllerプロパティをオーバーライドするため、お勧めできません。UIViewController別の名前を付けます。
  • 親ビュー コントローラーの-viewDidLoadメソッドは、AddContacts オブジェクトの右バー ボタンを割り当てる場所ですか? 代わりに、バー ボタンを設定するコードを AddContacts の実装に配置することを検討してください。
于 2012-04-30T20:53:40.667 に答える