2011-07-07 14 views
0

タイトル「Media」とアクション「mediaViewComplete」の「戻る」ボタンが含まれている、以下に定義されているようなナビゲーションコントローラなしのカスタムUINavigationBarが画面上にあります。ただし、ボタンをタップしたときにmediaViewCompleteメソッドが呼び出されることはありません。戻るボタンの操作をどのように指定しますか?オプション:スタンドアロンのUINavigationBarのカスタム戻るボタンのアクションを指定するにはどうすればよいですか?

navigationItem.backBarButtonItem = backbutton; 

をbackBarButtonItemは、あなたの行動によって上書きされていない、それ自身のイベントがあります。

self.navigationBar=[[UINavigationBar alloc]initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 44)]; 
navigationBar.barStyle=UIBarStyleBlackTranslucent; 

UINavigationItem *navigationItem=[[UINavigationItem alloc]init]; 
UIBarButtonItem *backButton=[[UIBarButtonItem alloc]initWithTitle:@"Media" style:UIBarButtonItemStylePlain target:self action:@selector(mediaViewComplete)]; 
navigationItem.backBarButtonItem=backButton; 
[self.navigationBar pushNavigationItem:navigationItem animated:NO]; 

navigationItem=[[UINavigationItem alloc]init]; 
UIBarButtonItem *editButton=[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:self action:@selector(editCategorization)]; 
navigationItem.rightBarButtonItem=editButton; 
[self.navigationBar pushNavigationItem:navigationItem animated:NO]; 

[self.view addSubview:navigationBar]; 

[editButton release]; 
[backButton release]; 
[navigationItem release]; 

答えて

1

問題は、あなたが使用していることです。実際、Appleのガイドラインによると、あなたはbackBarButtonItemのアクションとして "nil"を使うべきだと述べています。 backBarButtonItemは、現在のView Controllerによって所有されていません。

ボタンの矢印の形状に気にかけていない場合は、代わりにleftBarButtonItemを使用する必要があります。矢の形をした完全なカスタムバックボタンを作成したい場合は、カスタムマジックを行う必要があります。幸いにも、仕事のほとんどは、あなたのために行われています

http://idevrecipes.com/2011/01/12/how-do-iphone-apps-instagramreederdailybooth-implement-custom-navigationbar-with-variable-width-back-buttons/

は、このプロジェクトをダウンロードして、その結果を見てください。矢印付きのカスタムバックボタンを保持するために必要な画像も含まれています。それはもっと仕事ですが、ハックはずっと少ないです。

+0

ありがとうございました。私はすべてのカスタムコードを避けようとしていました。あなたがバックボタンのアクションを指定することはできないというAppleの見解のようだ。 – ChrisP

関連する問題