Неизвестный селектор отправлен в экземпляр, ошибка iPhone - PullRequest
0 голосов
/ 10 февраля 2012

Я получаю сообщение об ошибке

"012-02-10 13: 54: 52.570 HelloWorld [14275: 10103] - [HelloWorldViewController buttonPressed]: нераспознанный селектор отправлен в экземпляр 0x6cc0c50 2012-02-1013: 54: 52.572 HelloWorld [14275: 10103] * Завершение работы приложения из-за необработанного исключения «NSInvalidArgumentException», причина: '- [HelloWorldViewController buttonPressed]: нераспознанный селектор, отправленный экземпляру 0x6cc0c50' ".

Это оскорбительный текст:

-(void)buttonPressed:(id)sender {
    UIButton *button = (UIButton*)sender;
    NSString *text = [button titleForState:UIControlStateNormal];
    NSLog(@"%@",text);
}

Я знаю это, потому что, если я изменю код на это:

-(void)buttonPressed {
    NSLog(@"Button Pressed");
}

Тогда он будет работать правильно.

Однако мне нужен текст от компонента, который отправил сообщение.Компоненты не перетаскиваются с IB.Они размещаются, инициализируются и помещаются в метод loadView.К каждой из моих кнопок я добавил buttonPressed в качестве прослушивателя действий.

Ответы [ 3 ]

3 голосов
/ 10 февраля 2012

Ошибка нераспознанный селектор может быть вызвана отсутствием :.

[yourbutton addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];

вместо

[yourbutton addTarget:self action:@selector(buttonPressed) forControlEvents:UIControlEventTouchUpInside];

В первом случае вы вызываете-(void)buttonPressed:(id)sender.Во втором вместо этого вы звоните -(void)buttonPressed.

Но если вы предоставите больше кода для вашего UIButton, вам будет проще понять, что происходит.

1 голос
/ 10 февраля 2012

, что может иметь место, когда вы добавили событие @selector(buttonPressed:) для нажатия кнопки, вы забыли поставить : с именем метода.

вы можете проверить на то же самое.

1 голос
/ 10 февраля 2012

В первом (не работающем) случае у вас есть -(void)buttonPressed:(id)sender, а во втором (работающем) у вас есть -(void)buttonPressed.Очевидно, ваша кнопка вызывает функцию без аргумента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...