向UIBarButtonItem添加自定义选择器

14

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

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

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修饰它来提示设计师这是一个动作。它编译为void。

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

谢谢你的 [buttonHello setTarget:self];[buttonHello setAction:@selector(sayHello:)]; .... 这个救了我!! - Greg
谢谢您写得如此精美的答案,Bryan;您有没有可能以这种方式重写苹果公司的API文档的其余部分?;-) - Slowburner

2

这里有多种不同的init调用可供使用,详见此处的Instance Methods部分:

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

此外,您可以在此处查看一个使用示例:

如何在运行时为UIBarButtonItem设置目标和操作

希望这能帮到您!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接