2010-08-05 2 views
0

Я создаю приложение для iPhone. У меня есть два контроллера вида (главный и окошко). В контроллере представлений у меня есть UIButton, который связывается с IBAction в контроллере представления.Почему я вижу следующее исключение в своем приложении?

Я получаю:

2010-08-05 21:40:05.741 appname[9151:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[aboutViewController gotoMain2]: unrecognized selector sent to instance 0x5c09950' 

Heres код:

// 
// aboutAboutViewController.h 
// 
// Created by **** on 5/08/10. 
// Copyright 2010 ***. All rights reserved. 
// 

#import <UIKit/UIKit.h> 
#import <Foundation/Foundation.h> 

@interface AboutViewController : UIViewController { 

} 
- (IBAction)gotoMain2; 
@end 

And the .m file: 

// 
// AboutViewController.m 
// 
// Created by **** on 5/08/10. 
// Copyright 2010 ****. All rights reserved. 
// 

#import "AboutViewController.h" 

@implementation AboutViewController 
- (IBAction)gotoMain2 { 
[self dismissModalViewControllerAnimated:TRUE]; 
} 
@end 

Я 100% уверен, что все взаимосвязано правильно в Xcode и Interface Builder

Любая помощь оценивается

Спасибо. Daniel

ОБНОВЛЕНИЕ: Я узнал только сейчас, что он пытается указать на другой класс .. Но это правильно в IB ???

ответ

2

Вы должны проверить, где вы действительно создаете этот экземпляр AboutViewController. Установка класса для «Владелец файла» сообщает IB, какой класс ожидает. Но может быть, что фактический объект, загружающий этот наконечник, не является AboutViewController.

BTW, «редактирование» сообщений об ошибках, чтобы скрыть секрет, - это хороший способ скрыть реальную ошибку и сделать ее более трудной для других людей. :)

0

В сообщении об ошибке указано aboutViewController, но в вашем коде оно называется AboutViewController. Убедитесь, что этот случай совпадает, также в свойствах Interface Builder.

+0

Извините, что .. я быстро отредактировал его, прежде чем я опубликовал только, чтобы скрыть некоторые имена .. Это все правильно в реальном коде .. – Daniel

0

Если у вас есть правильная настройка, то это «Thing Inside (TM)».

Удалить кнопку. Создайте новый и настройте его снова.

Обязательно выйти и перезагрузить интерфейс Interface Builder.

+0

Уже пробовал: s – Daniel

+0

ОБНОВЛЕНИЕ: Я узнал только сейчас, что он пытается указать на другой класс .. Но его правильно в IB ??? – Daniel

0

Try:

- (IBAction)goToMain2:(id)sender; 

и

- (IBAction)goToMain2:(id)sender { 
    [self dismissModalViewControllerAnimated:YES]; 
} 
+0

Просто попробовал именно тогда, все еще не работает: S. BTW контроллер представлений задан как класс в владельце файлов в представлении nib – Daniel

+0

, как вы создаете соединения с кнопки на контроллер? – jamapag

+0

http://grab.by/5KL5 – Daniel

0

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

Я не возражал бы пари, что сообщение об ошибке выглядит следующим образом:

-[AboutViewController gotoMain2:]: unrecognized selector sent to instance 0x5c09950 
           ^^ colon here 

Причина, я думаю, что это то, что IBAction s обычно объявлены следующим образом:

-(IBAction) doAnAction: (id) sender; 
         ^^^^^^^^^^^^^ actions take a parameter which is the object that sends them.. 

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

Смежные вопросы