Пробовал это, но работает только для UIButton:
[btn setTarget:self action:@selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside];
Пробовал это, но работает только для UIButton:
[btn setTarget:self action:@selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside];
Просто установите свойства UIBarButtonItem target
и action
.
У меня возникла аналогичная проблема... Предполагаю, вы имеете в виду, что если ваш 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:)];
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);
}
UIBarButtonItem *barListBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemAdd target:self action:@selector(getTruckStopListAction)];
self.navigationItem.rightBarButtonItem = barListBtn;
[barListBtn release];
Если вам понадобится достаточно времени в вашем коде, приятно продолжить и расширить 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, лучший способ установить цель и действие - инициализировать кнопку одним из следующих способов:
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)#>
@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:)];
Установите target
и action
вашего UIBarButtonItem
Swift 4
button.target = self
button.action = #selector(action)
@objc func action (sender:UIButton) {
print("action")
}
Вы можете попробовать метод addTarget.