2012-02-09 22 views
5

Açık bir paneli bu şekilde kayan bir pencere olarak görüntülüyorum.NSOpenPanel Sheet

Birisi paneli panel olarak çalıştırırken bana yardımcı olabilir mi? Pencere nesnesi mWindow. Kullandığım standart kodların çoğu amortismana tabi tutuluyor.

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]; 
    } 
} 

cevap

12

Oldukça basit, ilgili yöntem aslında NSOpenPanel miras aldığı NSSavePanel, bir parçası olduğu için bunu kaçırmış olabilir gerçi docs burada.

, bloklara erişimi böylece Snow Leopard veya daha iyi hedeflenmesi ve konum varsayarsak, bu ile runModal çağrıyı yerine meselesi:

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

    if (result == NSFileHandlingPanelOKButton) { 

     // Do something. 
    } 
}]; 
+0

teşekkürler - Hala bunu elde edemez. Ayrıştırma hataları alıyorum. – user1198008

+0

Lütfen hangi hataları aldığınızı açıklayın. –

+0

Üzgünüm. Sadece bir başka ihmal edildim * * sonra *]; Şimdi iyi çalışıyor. yardım için teşekkürler. – user1198008