2011-02-11 1 views
21

ドリルダウンナビゲーションコントローラで戻るボタンをカスタマイズしようとしています。navigationItem.backBarButtonItemが機能しません。前のメニューがまだボタンとして表示されているのはなぜですか?

- (void)add:(id)sender 
{ 
    MyAddViewController *addController = [[MyAddViewController alloc] initWithNibName:@"MyAddViewController" bundle:nil]; 

    [self.navigationController pushViewController:addController animated:YES]; 

    [addController release]; 
} 

これは動作し、私はそれが新しいビューにドリルダウン追加ボタンをクリックしたときに:私はコードをプログラム的に新しいUIViewControllerを生成ボタンを追加している私の1つのビューコントローラで

self.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil] autorelease]; 

しかし、これは動作していない:私は持っているMyAddViewController.mviewDidLoadメソッド内。ナビゲーションコントローラの戻るボタンは、前のビューのコントローラのタイトルのままです。行は何もしないようです。私は何か見落としてますか?

おかげ

答えて

26

これだけself.navigationItem.backBarButtonItemを持っているのViewControllerした後、それぞれの子に取り組みます。

39

self.navigationItem.backBarButtonItemは、ビューコントローラによってプッシュされたビューに表示される戻るボタン用です。したがって、その行を前のView Controllerに移動する必要があります。

+0

プッシュビューで実行するアクションを、以前のビューコントローラに戻す前にどのように割り当てるかを指定します。 – mask

+1

私が知る限り、あなたはbackBarButtonItemを使ってそれを行うことはできません。これを行うには、leftBarButtonItemを置き換えてアクションを割り当てる必要があります。 – marimaf

+2

この回答は何時間もの欲求不満の後に私を助けました。 – Tres

10

あなたはbackBarButtonItemleftBarButtonItemを混同しています。 backBarButtonItemUINavigationItem docsから:

こちらは ナビゲーションバー場合、それは次 項目トップ未満である項目が ナビゲーションに戻るボタンとして表すことができるの背面項目である場合バー。このプロパティを使用して 戻るボタンを指定します。ターゲット と、バックバーのボタン項目 のアクションをnilにする必要があります。デフォルトの の値は、ナビゲーション項目のタイトル を表示するバーボタン項目です。

self.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil] autorelease]; 

へ:あなたが変更した場合

ので、

self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil] autorelease]; 

私はあなたが所望の効果を得ると考えています。

+10

...「正しい戻るボタン」でないことを除いて、つまり、矢印の形が欠落しています。 –

+0

tyvm +1 - leftBarButtonItemが私が必要としていたときに、backBarButtonItemに代入しようとしました。 – kfmfe04

4

backBarButtonItemを置き換えることはできませんが、leftBarButtonItemを使用して無効にすることができます。 ViewController AはViewControllerをBを押すと

- (void)dismissMyView { 
    [self.navigationController popViewControllerAnimated:YES]; 
} 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] 
     initWithTitle:@"Quit" style: UIBarButtonItemStyleBordered 
     target:self action:@selector(dismissMyView)]; 
} 
+4

バックボタン(矢印ボタン)のように見えないことを除いて、 – marimaf

0

はその間、我々が設定したい:しかし、戻るボタンと同じように動作実行するための新しいボタンを取得するには、次のような新しいボタン何かのターゲットとアクションを設定する必要がありますバックバーのボタンの太さ、私たちは "self.navigationItem.backBarButtonItem = .."を設定する必要があります。それがViewController Bで設定されていれば、私たちが望むように動作しません。

関連する問題