2013-08-12 5 views
4

Приветствую друзей, я столкнулся с проблемой при создании приложения MAC. У меня есть два контроллера вида. когда нажимает на кнопку, которая находится в первом зрения контроллера приложения заменить вид, используя ниже кодОшибка приложения прикладного программного обеспечения при нажатии кнопки мыши

- (IBAction)gotoEmployeeView:(id)sender 
{ 
    delegate = (AppDelegate *)[[NSApplication sharedApplication]delegate]; 
    secondViewController *employeeVC = [[secondViewController alloc]initWithNibName:@"secondViewController" bundle:nil]; 
    [[delegate.window.contentView animator] replaceSubview:self.view with:secondVC.view]; 
    secondVC.view.frame = ((NSView *)delegate.window.contentView).bounds; 
} 

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

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

и когда я нажал на него, приложение разбилось. и получить под ошибкой

2013-08-12 14:33:46.989 Employee Register[1954:303] -[__NSCFString btnClicked:]: unrecognized selector sent to instance 0x10213ace0 
2013-08-12 14:33:46.991 Employee Register[1954:303] -[__NSCFString btnClicked:]: unrecognized selector sent to instance 0x10213ace0 
2013-08-12 14:33:46.994 Employee Register[1954:303] (
0 CoreFoundation      0x00007fff8d76cf56 __exceptionPreprocess + 198 
1 libobjc.A.dylib      0x00007fff80e47d5e objc_exception_throw + 43 
2 CoreFoundation      0x00007fff8d7f91be -[NSObject doesNotRecognizeSelector:] + 190 
3 CoreFoundation      0x00007fff8d759e23 ___forwarding___ + 371 
4 CoreFoundation      0x00007fff8d759c38 _CF_forwarding_prep_0 + 232 
5 CoreFoundation      0x00007fff8d75c70d -[NSObject performSelector:withObject:] + 61 
6 AppKit        0x00007fff8c5208ca -[NSApplication sendAction:to:from:] + 139 
7 AppKit        0x00007fff8c5207fe -[NSControl sendAction:to:] + 88 
8 AppKit        0x00007fff8c520729 -[NSCell _sendActionFrom:] + 137 
9 AppKit        0x00007fff8c51fbec -[NSCell trackMouse:inRect:ofView:untilMouseUp:] + 2014 
10 AppKit        0x00007fff8c59fb74 -[NSButtonCell trackMouse:inRect:ofView:untilMouseUp:] + 489 
11 AppKit        0x00007fff8c51e7f6 -[NSControl mouseDown:] + 786 
12 AppKit        0x00007fff8c4e9c98 -[NSWindow sendEvent:] + 6306 
13 AppKit        0x00007fff8c4833a5 -[NSApplication sendEvent:] + 5593 
14 AppKit        0x00007fff8c419a0e -[NSApplication run] + 555 
15 AppKit        0x00007fff8c695eac NSApplicationMain + 867 
16 Employee Register     0x0000000100001342 main + 34 
17 Employee Register     0x0000000100001314 start + 52 
) 

ответ

0

Похоже, вы отправляете сообщение btnClicked на объект NSString. Можете ли вы разместить код, который вы называете [... bntClicked]?

Поведение, которое вы описываете, может означать либо то, что viewController, реализующий метод btnClicked, освобождается до того, как вызывается действие или что действие в построителе интерфейса установлено неправильно.

Вы должны добавить оператор журнала в метод dealloc viewController, реализующий btnClicked, и убедитесь, что он не освобождается до того, как вызывается действие. Если вы используете ARC, убедитесь, что у вас есть данные участника, указывающие на ваши контроллеры, поэтому они не освобождаются.

Также вы должны удалить ассоциацию ibaction в построителе интерфейса и сделать это снова, убедившись, что вы подключите кнопку к правильному контроллеру.

0

Ваш код gotoEmployeeView выглядит хорошо для меня.
ПРИМЕЧАНИЕ.: replaceSubview:with: метод вызывает выпуск oldView.

Посмотрите на sample project.

+0

Здравствуйте, Parag благодарит за ваш ответ, но все же мое падение приложения при нажатии кнопки мыши. – Pratik

+0

Проверьте мой образец проекта. –

+0

Я скопировал ваш код и поместил в свой проект, но не удача – Pratik

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