«NSInvalidArgumentException» UIButton IBAction Ошибка - PullRequest
1 голос
/ 02 апреля 2010

У меня есть кнопка в виде, которая отказывается работать. Я работал с пустым приложением вида по умолчанию из X-Code, но ни в одном из моих приложений он не будет работать, вместо этого он выдает следующую ошибку.

Завершение работы приложения из-за отсутствия связи исключение NSInvalidArgumentException, причина: '*** - [UIViewController showVicInfo:]: нераспознанный селектор отправлен на экземпляр 0x3c084f0'

Отладчик тоже не поможет. Я позаботился о том, чтобы подключить кнопку к владельцу файла (а не наоборот). Ниже приведен код для действия. И я знаю, что это не окно с предупреждением, потому что точка останова там даже не достигается.

about.h

    @interface about : UIViewController {

}

-(IBAction)showVicInfo:(id)sender;

about.m

-(IBAction)showVicInfo:(id)sender {
    UIAlertView *myAlert = [[UIAlertView alloc] initWithTitle:@"No Internet Connection" message:@"You require an internet connection via WiFi or cellular network for iFirelert to work." delegate:self cancelButtonTitle:@"OK, thanks" otherButtonTitles:nil];
    [myAlert show];
    [myAlert release];
}

Обновление: к вашему сведению, я так и делал, создавая кнопку, если она помогает.

  1. Создан новый вид (Файл> Новый файл> UIViewControllerSubclass с XIB для интерфейса)
  2. Добавлено - (IBAction) showInfo: (id) отправитель; до о.ч
  3. Добавлено
  4. - (IBAction) showVicInfo: (id) отправитель { UIAlertView * myAlert = [[UIAlertView alloc] initWithTitle: @ "Нет интернета Connection "message: @" Вам требуется подключение к интернету через WiFi или сотовая сеть для iFirelert работа ". делегат: самостоятельно cancelButtonTitle: @ "Хорошо, спасибо" otherButtonTitles: ноль]; [myAlert show]; [релиз myAlert]; } до около.
  5. Открыл About.xib в Интерфейсном Разработчике, перетащил Прямоугольную Кнопку на Вид
  6. Подключил кнопку к действию -showVicInfo, нажав Ctrl и щелкнув кнопку в свойстве «Владелец файла» (не наоборот).
  7. Проверено, что Владельцу файла был присвоен класс "about".

А затем скомпилирован и запущен с ошибкой в ​​X-Code.

Обновление 2: ОК, я решил, что это должен быть параметр или что-то в моем существующем проекте. Я скопировал два файла классов и файл XIB, который работает в другом проекте X-Code, но кнопка также выдает ту же ошибку в существующем приложении.

Ответы [ 2 ]

2 голосов
/ 01 ноября 2010

Была такая же ошибка. Проблема была в том, что я выпустил viewController.

AnswerStructureViewController* questionVC = [[AnswerStructureViewController alloc] initWithOpts:dict];
[window addSubview:questionVC.view];
[questionVC release];

Все хорошо, если вы не отпустите

1 голос
/ 02 апреля 2010

Я думаю, что Squeegy прав, ваш VC - простой старый UIViewController и не принимает showVicInfo.

Вы установили класс (command-4) для своего ViewController в IB?

Или, если вы распределяете это самостоятельно, делаете ли вы это так:

vc = [UIViewController alloc];    // wrong class

когда вы должны делать это:

vc = [about alloc];     

В сообщении об ошибке сообщается, что showVicInfo было отправлено на 0x3c084f0. Проверьте адрес контроллера представления, который вы создали (например, значение в «vc» выше), если это 0x3c084f0, это ваш ответ. Конечно, значение может быть другим в следующий раз, но NSLog его при создании, а затем сравните с сообщением об ошибке, чтобы точно знать, на что оно ссылается.

Проверьте также, правильно ли подключена кнопка в IB. Если вы выберете кнопку и перейдете на вкладку «Подключения кнопок», у вас должны быть подключения. Для Touch Up Inside следует подключиться к вашей функции действия, в вашем IB он должен подключиться к showVicInfo:

...