6

カスタム ボタンを 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];
4

3 に答える 3

6

uibarbuttonitem ではなく、uibutton のターゲットを追加する必要があります。

uibarbuttonitem に必要なものをさらに説明するには、アクション メソッド内でタッチアップに応答することです。ドキュメントでは、uibutton のカスタム ビューで uibarbuttonitem を初期化するときに、uibutton に対してそれを行う必要があると書かれています。

于 2013-07-31T19:44:50.047 に答える
4

次のようにアクションとターゲットを追加しUIButtonます。

[myButton addTarget:self
             action:@selector(handleMyButtonTap)
   forControlEvents:UIControlEventTouchUpInside];

次のようにアクションとターゲットを追加しUIBarButtonItemます。

[myBarButtonItem setAction:@selector(handleBarButtonTap)];
[myBarButtonItem setTarget:aTarget];
于 2013-07-31T19:43:18.573 に答える