NSInvalidArgumentException - PullRequest
       8

NSInvalidArgumentException

3 голосов
/ 31 августа 2009

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

Имейте простую кнопку на UIView, связанную с IBAction.

Код это ...

Contact.h

#import <UIKit/UIKit.h>

@interface Contact : UIViewController {
}

-(IBAction)buttonPressed:(id)sender;

@end

Contact.m

#import "Contact.h"

@implementation Contact

- (IBAction)buttonPressed:(id)sender  
{
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Button Pressed" message:@"You pressed the button" delegate:nil cancelButtonTitle:@"Yep, I did." otherButtonTitles:nil];
    [alert show];
    [alert release];
}

Постоянно получаю это сообщение об ошибке:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[UIViewController buttonPressed:]: unrecognized selector sent to instance 0xd1d5f0'

Touch Up Inside связан с владельцем файла с помощью кнопки.

Скачали другой пример кода, и они работают нормально. Мой проект и перо настроены идентично другому примеру кода.

Понятия не имею, где вообще начинать пробовать и отлаживать.

Кто-нибудь поможет?

Ответы [ 4 ]

5 голосов
/ 04 сентября 2009

У меня была точно такая же проблема. Это потому, что ваш ViewController находился под TabBarController, а в представлении View Controller под ним вы задали для имени NIB контакт, но не установили для класса контакт в области идентификации.

1 голос
/ 31 августа 2009

В Интерфейсном Разработчике вы должны сказать ему, что такое класс File's Owner. Щелкните значок «Владелец файла», перейдите на панель «Идентификация» в Инспекторе (значок «i» в конце) и измените класс на «Контакт».

0 голосов
/ 31 августа 2009

только что создал новый проект, в котором нет ничего, кроме UIView и кнопки, и это все еще происходит

Это заставляет меня думать, что вы не совсем все настраиваете должным образом. Если это файл пера приложения, и он не содержит ничего, кроме UIView, то владельцем файла будет ваш делегат приложения, независимо от того, какой тип владельца файла вы указали в IB.

Попробуйте следующее:

  1. Создайте экземпляр Contact в своем файле пера: перетащите объект UIViewController и установите для его класса значение Contact.

  2. Соедините вид и кнопку до своего Contact экземпляра.

  3. Дайте нам знать, если это работает:)

0 голосов
/ 31 августа 2009

Вы уверены, что вставили правильный код? Ваш Contact.m должен содержать блок @implementation, содержащий реализацию, а не блок @interface, содержащий определения

Contact.m:

#import "Contact.h"

@implementation Contact

- (IBAction)buttonPressed:(id)sender
{
    NSLog(@"buttonPressed");
}

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