2012-02-21 2 views
1

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

2012-02-21 11:10:12.142 CollectionTest2[23277:10b] *** - 
[AppController customSheetDidClose:returnCode:contextInfo:]: unrecognized selector sent to instance 0x359c00 

Вот мой код:

/*Sheet Methods*/ 

- (void)showCustomSheet: (NSWindow *)window { 

    [NSApp beginSheet: panFilenameEditor modalForWindow: window modalDelegate: self didEndSelector: @selector(customSheetDidClose:returnCode:contextInfo:) contextInfo: nil]; 
} 

- (IBAction)closeCustomSheet:(id)sender { 

    [panFilenameEditor orderOut:self]; 
    [NSApp endSheet:panFilenameEditor]; 
} 

- (void) customSheetDidClose { 

    NSLog(@"sheet did close"); 
} 

ответ

1

в вашем методе showCustomSheet вы сообщаете лист вызвать селектор customSheetDidClose:returnCode:contextInfo: на контроллере приложения. Но такого метода нет.

Есть два решения:

  • Либо пройти @selector(customSheetDidClose) в вызове beginSheet:modalForWindow:modalDelegate:didEndSelector:contextInfo:.
  • Или переименуйте свой customSheetDidCloseMethod в - (void)customSheetDidClose:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo.
+0

@DD - спасибо, я просто смотрел документы и не понимал этого, но ваше объяснение имеет смысл. Теперь приложение работает нормально. – PruitIgoe

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