2012-02-09 69 views
5

這就是我如何將一個打開的面板顯示爲一個浮動窗口。NSOpenPanel Sheet

有人可以幫我把面板作爲工作表運行嗎?窗口對象是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

很簡單,這是正確的,在該文檔雖然你可能已經錯過了它,因爲相關的方法實際上是NSSavePanel,從中NSOpenPanel繼承的一部分。

。假定你的目標雪豹或更好,這樣就可以使用塊,它只是一個問題與此更換您的通話runModal:

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

    if (result == NSFileHandlingPanelOKButton) { 

     // Do something. 
    } 
}]; 
+0

感謝 - 仍不能得到它。我收到解析錯誤。 – user1198008 2012-02-09 22:05:31

+0

請解釋您收到的錯誤。 – 2012-02-09 22:48:21

+0

對不起。我簡單地在*之後忽略了另一個} *;現在工作正常。謝謝您的幫助。 – user1198008 2012-02-09 23:03:26