2012-02-09 4 views
5

이것은 열린 패널을 부동 창으로 표시하는 방법입니다.NSOpenPanel 시트

패널을 시트로 사용하여 나를 도울 수있는 사람이 있습니까? 창 개체는 mWindow입니다. 내가 사용했던 표준 코드의 상당 부분은 절하되었다.

NSOpenPanel *openPanel = [NSOpenPanel openPanel]; 
NSArray* fileTypes = [[NSArray alloc] initWithObjects:@"mp3", @"mp2", @"m4a", nil]; 

[openPanel setAllowsMultipleSelection: NO]; 
[openPanel setCanChooseDirectories:NO]; 
[openPanel setCanCreateDirectories:NO]; 
[openPanel setCanChooseFiles:YES]; 
[openPanel setAllowedFileTypes:fileTypes]; 

NSString * filePath = @"~/Desktop"; 
filePath = [filePath stringByExpandingTildeInPath]; 
NSURL *fileURL = [NSURL fileURLWithPath:filePath]; 
[openPanel setDirectoryURL:fileURL]; 

NSInteger clicked = [openPanel runModal]; 
if (clicked == NSFileHandlingPanelOKButton) { 
    for (NSURL *url in [openPanel URLs]) { 
     NSString *urlString = [url path]; 
     [input setStringValue:urlString]; 
     NSString *myString = [input stringValue]; 
     NSString *oldPath = [myString lastPathComponent]; 
     [inputDisplay setStringValue:oldPath]; 
    } 
} 

답변

12

매우 간단, 그것은 적절한 방법이 실제로 NSOpenPanel가 상속받는 NSSavePanel의 일부이기 때문에 당신이 그것을 놓쳤을 수 있지만 워드 프로세서에 바로 거기에 있습니다.

당신이 블록에 액세스하여 스노우 레오파드 이상을 대상으로하고있어 가정하면, 그것은이와 runModal 전화를 대체 단지 문제 :

[openPanel beginSheetModalForWindow:mWindow completionHandler:^(NSInteger result) { 

    if (result == NSFileHandlingPanelOKButton) { 

     // Do something. 
    } 
}]; 
+0

감사합니다 - 여전히 그것을 얻을 수 없습니다. 구문 분석 오류가 발생합니다. – user1198008

+0

어떤 오류가 발생했는지 설명하십시오. –

+0

죄송합니다. 나는 단순히 다른 것을 생략하고 있었다. * after *]; 이제 잘 작동합니다. 도와 주셔서 감사합니다. – user1198008

관련 문제