2015-04-12 3 views
1

У меня есть простой проект с раскадрой для приложения Mac OS X. Я поместил кнопку в NSView и создал новый класс под названием OtherClass. Затем я связал IBAction с OtherClass.h. Теперь я хочу создать лист модели в главном окне. При использовании ViewController в качестве класса я мог бы просто сделать:Лист Модальное предупреждение запускается из другого класса, чем ViewController Cocoa Mac Storyboard Xcode 6

NSWindow *window = [self.view window]; 
NSAlert *alert = [[NSAlert alloc]init]; 
[alert beginSheetModalForWindow:window completionHandler:nil]; 

Но как это сделать из другого класса? Я использую Xcode 6.3, если это важно.

Спасибо за вашу помощь

ответ

0

Вы можете просто передать объект окна, связанный с кнопкой. Таким образом, вы можете называть это своим другом.

-(IBAction)callSheet:(id)sender { 

     NSWindow *window; 
if([sender respondsToSelector(@selector(window))]){ 

window = [sender window]; 

    }else if([sender respondsToSelector(@selector(view))]){ 

    window = [sender view].window; 

    } 

//Now call your alert 

    } 
+0

Спасибо, что отлично работает с кнопкой. Я попытался использовать тот же метод с элементом панели инструментов как кнопка IBAction. Но затем приложение вылетает: [окно NSToolbarItem]: нераспознанный селектор отправлен в экземпляр 0x608000120500 – doom4

+0

Вы можете вызвать это для элемента панели инструментов: ToolbarItem.view.window –

+0

спасибо за ваш ответ, но что вы предлагаете? Что такое элемент панели инструментов для вас? это IBOutlet элемента панели инструментов? Я пробовал это без везения: NSWindow * window = [sender ToolbarItem.view.window], где ToolbarItem - это iboutlet рассматриваемого элемента панели инструментов. – doom4

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