これを試してみましたが、UIButton でのみ機能します:
[btn setTarget:self action:@selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside];
これを試してみましたが、UIButton でのみ機能します:
[btn setTarget:self action:@selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItemtarget
とaction
プロパティを直接設定するだけです。
私は同様の問題に遭遇しました... UIButton が btnClicked を呼び出すための UITabBar の一部でない場合、適切に機能することを意味していると思います。これが提案している問題である場合は、btnClicked メソッドを確認して、次のように変更します。
-btnClicked:(id)sender
に
-(void) btnClicked:(id)sender
それ、そしてヘッダーファイルで btnClicked を宣言します...
価値があるのは、これがtabbarbuttonitemでボタンをセットアップする方法です:
UIBarButtonItem *exampleButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"button.png"] style:UIBarButtonItemStylePlain target:self action:@selector(btnClicked:)];
コードでこれが十分に必要な場合は、先に進んで、UIBarButtonItem
以下で Swift で行った拡張を行ってください。:)
import UIKit
extension UIBarButtonItem {
func addTargetForAction(target: AnyObject, action: Selector) {
self.target = target
self.action = action
}
}
例として、 self を として使用すると、次のUIViewController
ように呼び出すことができます。
self.myBarButtonItem.addTargetForAction(self, action: #selector(buttonPressed(_:))
UIBarButtonItem *barListBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemAdd target:self action:@selector(getTruckStopListAction)];
self.navigationItem.rightBarButtonItem = barListBtn;
[barListBtn release];
UIBarButtonItem をプログラムで追加する場合、ターゲットとアクションを設定する最善の方法は、次のいずれかの方法でボタンを初期化することです。
UIBarButtonItem *customButton = [[UIBarButtonItem alloc] initWithImage:<#(UIImage)#> style:<#(UIBarButtonItemStyle)#> target:<#(id)#> action:<#(SEL)#>
UIBarButtonItem *customButton = [UIBarButtonItem alloc] initWithTitle:<#(NSString *)#> style:<#(UIBarButtonItemStyle)#> target:<#(id)#> action:<#(SEL)#>
UIBarButtonItem *customButton = [UIBarButtonItem alloc] initWithImage:<#(UIImage *)#> landscapeImagePhone:<#(UIImage *)#> style:<#(UIBarButtonItemStyle)#> target:<#(id)#> action:<#(SEL)#>
addTarget メソッドを試してみてください。