2011-10-10 103 views
14

我是一个iOS新手。我有一个导航栏按钮,点击时应执行我自己的功能。什么是最好的方式来做到这一点?添加自定义选择器到UIBarButtonItem

UIBarButtonItem *doneBarButtonItem=[[UIBarButtonItem alloc] init]; 
[email protected]"Done"; 
self.navigationItem.rightBarButtonItem = doneBarButtonItem; 
[doneBarButtonItem release]; 

回答

42

一种方式是与目标和行动初始化:

UIBarButtonItem *buttonHello = [[UIBarButtonItem alloc] initWithTitle:@"Say Hello"  
    style:UIBarButtonItemStyleBordered target:self action:@selector(sayHello:)]; 

另一种方式是设定目标和行动,你创造了它

[buttonHello setTarget:self]; 
[buttonHello setAction:@selector(sayHello:)]; 

目标后的实例该对象将被调用。在自我的情况下,该方法将在该对象的这个实例上。

动作是将被调用的方法。通常情况下,你用IBAction装饰它以向设计者暗示它是一个动作。它编译为无效。

- (IBAction)sayHello:(id)sender 
{ 
    // code here 
} 
+0

谢谢''buttonHello setTarget:self];''和'[buttonHello setAction:@selector(sayHello :)];'....这救了我! – Greg

+0

感谢这封美丽的答案,Bryan;你有没有机会以这种方式重写苹果的其他API文档? ;-) – Slowburner

2

有多种,你可以使用不同的init调用,在实例方法部分这里列出:

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIBarButtonItem_Class/Reference/Reference.html

- (id)initWithBarButtonSystemItem:(UIBarButtonSystemItem)systemItem target:(id)target action:(SEL)action 
- (id)initWithCustomView:(UIView *)customView 
- (id)initWithImage:(UIImage *)image style:(UIBarButtonItemStyle)style target:(id)target action:(SEL)action 
- (id)initWithTitle:(NSString *)title style:(UIBarButtonItemStyle)style target:(id)target action:(SEL)action 

此外,您还可以在这里检查出使用中的一个样本:

How to set target and action for UIBarButtonItem at runtime

希望这有助于!

相关问题