2014-01-27 1 views
6

У меня есть главный экран с импортированным пользовательским actionBar. Я создал этот actionBar в отдельном файле .xib с файлами .m и .h.iOS, непризнанный селектор, отправленный в экземпляр?

Я делаю некоторые графические настройки в своем действииBar.m's viewDidLoad как backgroundColor и некоторые другие вещи.

Я также получил кнопку на этом actionBar. Я связал способ, которым я обычно связываю кнопки, с IBAction.

загружаю мой ActionBar мне в начало В так:

ActionBarWithLogoff *actionBar = [[ActionBarWithLogoff alloc] initWithNibName:@"ActionBarWithLogoff" bundle:nil]; 
[topBar addSubview:actionBar.view]; 
[actionBar release]; 

Мой actionBar.h:

- (IBAction)ActionBarLogoff:(id)sender; 

метод моего actionBars.m в:

-(void) ActionBarLogoff:(UIButton *)sender 
{ 
NSLog(@"!!!!!!!!!!ActionBarLogoff"); 
} 

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

2014-01-27 13:52:21.856 GB_Mobil_DK[2954:60b] -[__NSArrayM ActionBarLogoff:]: unrecognized selector sent to instance 0x1656d880 2014-01-27 13:52:21.858 GB_Mobil_DK[2954:60b] * Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayM ActionBarLogoff:]: unrecognized selector sent to instance 0x1656d880' * First throw call stack: (0x2f94be83 0x39ca86c7 0x2f94f7b7 0x2f94e0af 0x2f89cdc8 0x32104da3 0x32104d3f 0x32104d13 0x320f0743 0x3210475b 0x32104425 0x320ff451 0x320d4d79 0x320d3569 0x2f916f1f 0x2f9163e7 0x2f914bd7 0x2f87f471 0x2f87f253 0x345b92eb 0x32134845 0x97985 0x3a1a1ab7) libc++abi.dylib: terminating with uncaught exception of type NSException

Любой, кто может мне сказать, почему? и, что самое важное, помочь мне решить эту проблему ^^?

+0

Показать реальное сообщение об ошибке. – Larme

+1

ИМЯ ИМЯ ИСПОЛНЕНИЯ МЕТОДА ПРОВЕРКИ КНОПКИ. МОЖЕТ БЫТЬ ОБОИХ РАЗЛИЧНЫМИ. –

+0

вы используете ARC .... – codercat

ответ

8

Вы выпускаете экземпляр actionBar и просто сохраняете его view. Если actionBar экземпляр является ответчиком на действие кнопки, то сообщение о нажатии кнопки отправляется удаленному экземпляру. Вы должны сохранить экземпляр actionBar. Один из способов сделать это - сделать его ivar или retain.

Также похоже, что вы создаете UIViewController для пользовательского представления. Вместо этого вы можете создать только пользовательский UIView с его XIB.

РЕДАКТИРОВАТЬ

Объявите сохраняют свойство,

@property (nonatomic, retain) ActionBarWithLogoff *actionBar; 

ИЛИ

Просто объявить как Ивар,

@interface YourViewController: UIViewController { 
    ActionBarWithLogoff *actionBar; 
} 

И dealloc методом,

-(void) dealloc { 
    //... 

    [actionBar release]; 

    //... 
} 

Надеюсь, что это поможет!

+0

, поэтому мне следует перестать называть [releaseBar release]? или мне нужно изменить это на что-нибудь, чтобы сохранить его? – user2408952

+0

@ user2408952 Да, вы не должны выпускать его, как сейчас. Посмотрите мой обновленный ответ на предложение. – Amar

+0

Я заработал, изменив освобождение, чтобы сохранить.ответьте, если это не правильный способ сделать это. Если да, то большое спасибо за помощь. – user2408952