Добавить пользовательский селектор в UIBarButtonItem - PullRequest
14 голосов
/ 11 октября 2011

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

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

Ответы [ 2 ]

44 голосов
/ 11 октября 2011

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

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

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

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

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

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

- (IBAction)sayHello:(id)sender
{
    // code here
}
2 голосов
/ 11 октября 2011

Существует множество различных вызовов инициализации, которые вы можете использовать, перечисленные в разделе Методы экземпляра здесь:

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 во время выполнения

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

...