将自定义选择器添加到UIBarButtonItem

时间:2011-10-10 22:06:55

标签: iphone objective-c ios ipad uibarbuttonitem

我是iOS新手。我有一个导航栏按钮,点击它时应该执行我自己的功能。最好的方法是什么?

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

2 个答案:

答案 0 :(得分:44)

一种方法是使用目标和操作进行初始化:

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

另一种方法是在创建后设置目标和操作

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

Target是将被调用的对象的实例。在self的情况下,该方法将在该对象的实例上。

Action是将被调用的方法。通常,您使用IBAction对其进行装饰,以向设计者暗示它是一个动作。它编译为无效。

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

答案 1 :(得分:2)

您可以使用各种不同的初始化调用,在此处的“实例方法”部分中列出:

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

希望这有帮助!