Как связать метод с этой кнопкой? - PullRequest
0 голосов
/ 11 октября 2010

У меня есть кнопка панели навигации, которая отображает как изображение, так и текст. Это код:

UIImage *saveImage = [UIImage imageNamed:@"star.png"];

UIButton *saveButton = [UIButton buttonWithType:UIButtonTypeCustom];

[saveButton setBackgroundImage:saveImage forState:UIControlStateNormal];
[saveButton setTitle:@"Save" forState:UIControlStateNormal];

saveButton.frame = (CGRect) {
    .size.width = 100,
    .size.height = 30,
};

UIBarButtonItem *barButton= [[UIBarButtonItem alloc] initWithCustomView:saveButton];

[self.navigationItem setRightBarButtonItem:barButton animated:YES];

Я пробовал это

[barButton setAction:@selector(saveArray)];

но это не работает.

Ответы [ 2 ]

3 голосов
/ 11 октября 2010

Помните, что вы также должны указать цель.Вы можете установить action / target для самого объекта UIButton:

[saveButton addTarget:target action:@selector(saveArray) forControlEvents:UIControlEventTouchUpInside];

Я пытался установить target / action для UIBarButtonItem напрямую, но, по-видимому, по какой-то причине он не работает в случае UIButton для пользовательского представления,

0 голосов
/ 11 октября 2010

Вы помните, чтобы установить цель? Если нужный метод принадлежит к тому же классу, вы можете сделать:

[barButton setTarget:self];

Тем не менее, action и target - оба свойства (новые для Obj-C 2.0), рассмотрите возможность использования точечной нотации:

barButton.action = @selector(saveArray:)
barButton.target = self;
...