Добавить пользовательский селектор в UIBarButtonItem

Я новичок iOS. У меня есть кнопка панели навигации, которая при нажатии должна выполнять мою собственную функцию. Каков наилучший способ сделать это?

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

Ответы

Ответ 1

Один из способов - инициализировать цель и действие:

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

Другой способ - установить цель и действие после его создания.

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

Цель - это экземпляр объекта, который будет вызван. В случае self метод будет находиться в этом экземпляре объекта.

Действие - это метод, который будет вызван. Как правило, вы украшаете его IBAction, чтобы намекнуть дизайнеру, что это действие. Он компилируется в пустоту.

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

Ответ 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

Кроме того, вы можете проверить пример использования здесь:

Как установить цель и действие для UIBarButtonItem во время выполнения

Надеюсь, это поможет!