web-dev-qa-db-ja.com

実行時にUIBarButtonItemのターゲットとアクションを設定する方法

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

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

UIBarButtonItemのtargetおよびactionプロパティを直接設定するだけです。

97
Ole Begemann

UIBarButtonItemには同じaddTargetメソッドがないため、次のように直接設定する必要があります

btn.target = self;
btn.action = @selector(barButtonCustomPressed:);

...

// can specify UIBarButtonItem instead of id for this case
-(IBAction)barButtonCustomPressed:(UIBarButtonItem*)btn 
{
    NSLog(@"button tapped %@", btn.title);
}
20
mihai

同様の問題にぶつかりました... 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:)];
14
J. Dave

targetactionUIBarButtonItemを設定します

Swift 5&4

button.target = self
button.action = #selector(action)

@objc func action (sender:UIButton) {
    print("action")
}
13
Haroldo Gondim

あなたのコードでこれを十分に必要とするなら、先に進んでUIBarButtonItemを拡張するのはいいことです。 :)

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(_:))
9
serenn
  UIBarButtonItem *barListBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemAdd target:self action:@selector(getTruckStopListAction)];   
    self.navigationItem.rightBarButtonItem = barListBtn;
    [barListBtn release];
7
sinh99

@ wp42今日は動作します。

Objective-Cでこれを行うには、UIBarButtonItemクラスにカテゴリを追加します。

.hファイル

#import <UIKit/UIKit.h>

@interface UIBarButtonItem (addons)

-(void)addTarget:(id)target andAction:(SEL)action;

@end

.mファイル

#import "UIBarButtonItem+addons.h"

@implementation UIBarButtonItem (addons)

-(void)addTarget:(id)target andAction:(SEL)action{
   [self setTarget:target];
   [self setAction:action];
}

@end

実際には:

[myBtn addTarget:self andAction:@selector(myFunction:)];
1
Itai Spector

プログラムで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)#>
0
Adam Cooper