68

これを試してみましたが、UIButton でのみ機能します:

[btn setTarget:self action:@selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside];
4

11 に答える 11

109

UIBarButtonItemtargetactionプロパティを直接設定するだけです。

于 2010-02-25T11:41:20.430 に答える
15

私は同様の問題に遭遇しました... 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:)];
于 2010-02-28T04:56:49.187 に答える
12

コードでこれが十分に必要な場合は、先に進んで、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(_:))
于 2015-08-11T14:56:52.487 に答える
7
UIBarButtonItem *barListBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemAdd target:self action:@selector(getTruckStopListAction)];   
self.navigationItem.rightBarButtonItem = barListBtn;
[barListBtn release];
于 2012-03-14T07:01:57.207 に答える
0

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)#>
于 2015-01-06T20:47:31.363 に答える
-5

addTarget メソッドを試してみてください。

于 2010-11-09T10:21:16.130 に答える