質問

画像とテキストの両方を表示するナビゲーションバーボタンがあります。これはコードです:

UIImage *saveImage = [UIImage imageNamed:@"star.png"];

UIButton *saveButton = [UIButton buttonWithType:UIButtonTypeCustom];

[saveButton setBackgroundImage:saveImage forState:UIControlStateNormal];
[saveButton setTitle:@"Save" forState:UIControlStateNormal];

saveButton.frame = (CGRect) {
    .size.width = 100,
    .size.height = 30,
};

UIBarButtonItem *barButton= [[UIBarButtonItem alloc] initWithCustomView:saveButton];

[self.navigationItem setRightBarButtonItem:barButton animated:YES];

私はこれを試しました

[barButton setAction:@selector(saveArray)];

しかし、それはうまくいきません。

役に立ちましたか?

解決

ターゲットも指定する必要があることを忘れないでください。アクション/ターゲットをuibuttonオブジェクト自体に設定できます。

[saveButton addTarget:target action:@selector(saveArray) forControlEvents:UIControlEventTouchUpInside];

ターゲット/アクションをuibarbuttonitemに直接設定しようとしましたが、何らかの理由でカスタムビューのためにuibuttonの場合は機能しないようです。

他のヒント

ターゲットを設定することを覚えていましたか?目的の方法が同じクラスに属している場合、次のことができます。

[barButton setTarget:self];

そうは言っても actiontarget 両方ともプロパティ(OBJ-C 2.0の新規)です。DOT表記法の使用を検討してください。

barButton.action = @selector(saveArray:)
barButton.target = self;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top