簡短的回答:沒有
更長的答案:在這裏龍
這是可能的,但東西可能會打破。您也可以使用類別添加方法,他們可能會工作,或者他們可能不工作。由於支持App Sandbox實現NSOpenPanel的方式出現了這些問題 - 幕後發生了各種各樣的欺詐行爲,甚至僅僅調用類中現有方法的便利類方法都可能導致OS X和對話框不報告錯誤出現。 NSOpenPanel是一種微妙的生物,應該儘可能少地觸及並且只有非常小心。
在另一個類中包裝一個NSOpenPanel實例是一個不同的故事,不應該讓它煩惱。走那條路。
附錄重新:評論
的beginSheetModalForWindow
的聲明是:
- (void)beginSheetModalForWindow:(NSWindow *)window completionHandler:(void (^)(NSInteger result))handler
的完成處理程序被傳遞指示哪個按鈕被按下的值。要採取行動依賴於您可以使用標準if
:
NSOpenPanel *openPanel;
NSWindow *hostWindow;
...
[openPanel beginSheetModalForWindow:hostWindow
completionHandler:^(NSInteger returnCode)
{
if (returnCode == NSFileHandlingPanelOKButton)
{
// OK pressed
...
}
else
{
// Cancel pressed
...
}
}
];
來源
2013-10-09 22:26:03
CRD
你究竟在做什麼?爲什麼你想要NSSavePanel的子類? –
只需使用一個需要返回的插件。我主要只是想重新創建NSSavePanel的beginheetmodalforwindow窗口。 – Dan68am
@ Dan68am - 你是什麼意思「如何實現塊處理程序」?如果你編寫了一個方法,然後在方法中使用標準函數調用語法調用該方法,則不會「實現」該塊。 – CRD