self.navigationItem.rightBarButtonItem не работает - PullRequest
1 голос
/ 06 ноября 2011

Привет. Я провел много исследований и использовал все их решения.Я как бы разочарован этим.

У меня есть это в моем viewDidLoad для создания моей правой кнопки.

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"bla"     style:UIBarButtonItemStyleBordered target:self action:@selector(test)];

Затем у меня есть этот метод теста для селектора.

- (void)test
{
NSLog(@"bla");
}

Но как-то я всегдаполучить нераспознанный селектор, и он падает каждый раз, когда я нажимаю на кнопку, я даже пытался сделать это с аргументом, просто чтобы посмотреть, работает ли он с двоеточием.

Ответы [ 2 ]

1 голос
/ 13 ноября 2011

Попробуйте определить действие следующим образом:

-(void) test:(id)sender {
    NSLog(@"blah");
}

И вместо этого при создании кнопки используйте @selector (test :).

Это основной шаблон для использования целиОбразец действия, используемый повсюду в Какао.В некоторых случаях у вас будет несколько элементов пользовательского интерфейса, вызывающих одно и то же действие, и вы захотите узнать, какой объект вызвал это действие.

0 голосов
/ 06 ноября 2011

У меня была похожая проблема ..

1 - убедитесь, что в вашем заголовке определено -(void)test.

2 - Если -(void)test не определено в вашем заголовке, убедитесь, что оно реализовано, прежде чем использовать его или сделать ссылку на него.

Кроме того, если вы не используете ARC, ваш код выше будет утечка.

Установка rightBarButtonItem сохраняет объект (+1) и alloc / init (+1), означая, что у вас всегда будет дополнительный счетчик ссылок.

Попробуйте ..

UIBarButtonItem *rbi = [[UIBarButtonItem alloc]initWithTitle:@"bla" style:UIBarButtonItemStyleBordered target:self action:@selector(test:)];
    self.navigationItem.rightBarButtonItem = rbi;
    [rbi release];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...