Пробовал это, но работает только для UIButton:Как установить цели и действия для UIBarButtonItem во время выполнения
[btn setTarget:self action:@selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside];
Пробовал это, но работает только для UIButton:Как установить цели и действия для UIBarButtonItem во время выполнения
[btn setTarget:self action:@selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside];
Просто установите UIBarButtonItem в target
и action
свойства непосредственно.
N.B. Это работает только в том случае, если 'UIBarButtonItem' не использует пользовательский вид, например' UIButton' –
. Для пользовательских представлений используйте: [button addTarget: self action: @selector (buttonPressed) forControlEvents: UIControlEventTouchUpInside]; – Jarrod
Можете ли вы привести пример того, к чему должны быть настроены? Цель говорит, что требуется AnyObject? Должно ли быть установлено значение UIGestureRecognizer? – Unome
У меня возникла аналогичная проблема ... Предполагаю, вы имеете в виду, что если ваш 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:)];
дополнительно, вы можете вынуть «:», делая ...: @ selector (btnClicked :)]; в ...: @ селектор (btnClicked)]; –
Возможно, вы захотите попробовать из метода addTarget.
UIBarButtonItem *barListBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemAdd target:self action:@selector(getTruckStopListAction)];
self.navigationItem.rightBarButtonItem = barListBtn;
[barListBtn release];
Для некоторых причина, по которой селектор не «называется» для меня .. Хмм .. – Entalpi
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 –
, особенно если вы хотите создать кнопки во время разработки! – mikebz
Если вы программно добавлять 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)#>
Если вам нужно это достаточно времени в вашем коде, приятно продолжить и расширить UIBarButtonItem
, который я сделал ниже в Swift. :)
import UIKit
extension UIBarButtonItem {
func addTargetForAction(target: AnyObject, action: Selector) {
self.target = target
self.action = action
}
}
В качестве примера, с самим собой, как UIViewController
, вы просто звоните:
self.myBarButtonItem.addTargetForAction(self, action: #selector(buttonPressed(_:))
@ wp42 Это делает работу сегодня.
Изящный способ сделать это в Objective-C добавляет категорию UIBarButtonItem класс:
.h файл
#import <UIKit/UIKit.h>
@interface UIBarButtonItem (addons)
-(void)addTarget:(id)target andAction:(SEL)action;
@end
.м-файл
#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")
}
Это не кажется, действительно даже для UIButton , – Oscar
Для UIButton правильным методом является '-addTarget: action: forControlEvents:' – Matoe