Подтвердить что ты не робот

Как установить цель и действие для UIBarButtonItem во время выполнения

Пробовал это, но работает только для UIButton:

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

Ответ 1

Просто установите свойства UIBarButtonItem target и action.

Ответ 2

У меня возникла аналогичная проблема... Предполагаю, вы имеете в виду, что если ваш UIButton не является частью вашего UITabBar для вызова btnClicked, он работает соответствующим образом. Если это проблема, которую вы предлагаете, проверьте свой метод 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:)];

Ответ 3

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);
}

Ответ 4

  UIBarButtonItem *barListBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemAdd target:self action:@selector(getTruckStopListAction)];   
    self.navigationItem.rightBarButtonItem = barListBtn;
    [barListBtn release];

Ответ 5

Если вам понадобится достаточно времени в вашем коде, приятно продолжить и расширить 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(_:))

Ответ 6

Если вы программно добавляете 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)#>

Ответ 7

@wp42 Сегодня он работает.

Отличным способом сделать это в objective-C является добавление категории в класс UIBarButtonItem:

.h файл

#import <UIKit/UIKit.h>

@interface UIBarButtonItem (addons)

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

@end

.m file

#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:)];

Ответ 8

Установите target и action вашего UIBarButtonItem

Swift 4

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

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

Ответ 9

Вы можете попробовать метод addTarget.