2012-04-30 15 views
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; 
} 

なぜボタンがナビゲーションコントローラに追加されていませんか?ナビゲーションコントローラにボタンが追加されていません

答えて

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を初期化してください。

+0

私はあなたに言ったようにしましたが、新しい問題はボタンをクリックしてSIGABRTの問題が発生したときです – Pamy

+0

'refreshPropertyList:'メソッドがこのファイルまたは 'AddContacts'クラスに存在しますか? –

+0

ありがとう。 – Pamy

1

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

はおそらく主な問題は、この行です:

self.navigationController.navigationItem.rightBarButtonItem = anotherButton; 

私は何を設定することにしたいことはacビューコントローラのナビゲーション項目上で右バーボタンアイテムであることをかなり確信しています。しかし

ac.navigationItem.rightBarButtonItem = anotherButton 

いくつか他のもの:

  • は、2人の文字の変数名を持っていません。 "ac"は非常にあいまいです。 "addContacts"はさらに情報を提供します。 "addContactsViewController"はさらに多くを提供します。
  • UIViewControllerサブクラスに独自のnavigationControllerプロパティを実装していますか? UIViewControllerに既にあるnavigationControllerプロパティをオーバーライドしているため、これはお勧めできません。別の名前を付けてください。
  • 親ビューコントローラの-viewDidLoadメソッドは、AddContactsオブジェクトの右バーボタンを割り当てる場所ですか?代わりにAddContactsの実装でバーボタンを設定するコードを代わりに入れてください。
関連する問題