カスタム ボタンを rightBarButtonItem に追加して、ナビゲーション バーをカスタマイズしようとしています。作成は非常に簡単です。
UIImage *myImage = [UIImage imageNamed:@"menu-icon.png"];
UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom];
[myButton setFrame:CGRectMake(0, 0, myImage.size.width, myImage.size.height)];
[myButton setBackgroundImage:myImage forState:UIControlStateNormal];
UIBarButtonItem *myButtonItem = [[UIBarButtonItem alloc] initWithCustomView:myButton];
[navItem setLeftBarButtonItem:myButtonItem animated:YES];
ターゲットまたはアクションのプロパティを設定できないことを除けば、良さそうです。次のコードは何もしません。
myButtonItem.target = myTarget;
myButtonItem.action = @selector(myButtonAction);
UIBarButtonItem を -initWithCustomView で初期化したため、機能しないことがわかりました。リンゴのドキュメントには次のように記載されています。
このメソッドによって作成されたバー ボタン アイテムは、ユーザーの操作に応答して、そのターゲットのアクション メソッドを呼び出しません。代わりに、バー ボタン アイテムは、指定されたカスタム ビューがユーザー インタラクションを処理し、適切な応答を提供することを期待します。
アップルが正確に何を意味するのか、少し混乱しています。カスタム コントロールなどを作成する必要がありますか? 私はまだそれを実際に行ったことがなく、どこから始めればよいかわかりません。
これを行う方法や、カスタム ナビゲーション バー ボタンを設定する別の方法について何か提案はありますか?
回答済み------------------------------------------------- ----------
このメソッドを UIButton に追加する必要がありました:
[myButton addTarget:myTarget action:@selector(myButtonAction) forControlEvents:UIControlEventTouchUpInside];