짧은 답변 : 없음
긴 답변 : 여기에 드래곤
그것은 가능하지만 물건은 아마 중단됩니다합니다. 범주를 사용하여 메소드를 추가 할 수도 있으며, 작동 할 수도 있고 그렇지 않을 수도 있습니다. 문제는 NSOpenPanel이 App Sandbox를 지원하기 위해 구현되는 방식으로 발생합니다. 다양한 chicanery가 뒤에서 진행되고 클래스의 기존 메소드를 호출하는 편의 카테고리 메소드조차도 OS X 및 대화 상자에서 오류가보고 될 수 있습니다. 나타나다. NSOpenPanel은 아주 조심스럽게 가능한 한 작게 만져야하는 섬세한 생물입니다.
다른 클래스에서 NSOpenPanel 인스턴스를 래핑하는 것은 다른 이야기이며 전혀 화나게하지 않아야합니다. 그 길로가.
부록 재 :
- (void)beginSheetModalForWindow:(NSWindow *)window completionHandler:(void (^)(NSInteger result))handler
완료 핸들러 눌린 버튼을 나타내는 값을 전달되는 : beginSheetModalForWindow
의 선언은
주석. 표준에 따라 조치를 취하려면 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에서 시작 시트 모드 윈도우를 다시 만들고 싶습니다. – Dan68am
@ Dan68am - "블록 처리기 구현 방법"이란 무엇입니까? 블록을 취하는 메소드를 작성하면 표준 함수 호출 구문을 사용하여 블록을 호출하는 메소드에서 블록을 "구현"하지 않습니다. – CRD