9 ответов:
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); }
я столкнулся с подобной проблемой... Я предполагаю, что вы имеете в виду, что если ваш 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 *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 } }в качестве примера, с себя как
UIViewController, ты просто звоните:self.myBarButtonItem.addTargetForAction(self, action: #selector(buttonPressed(_:))
Set
targetиactionвашегоUIBarButtonItemSwift 4
button.target = self button.action = #selector(action) @objc func action (sender:UIButton) { print("action") }
@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:)];
Если вы программно добавляете 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)#>
Comments