Несколько вещей, которые я заметил ... измените setCanChooseDirectories
на НЕТ. Если этот параметр включен, это означает, что папки являются допустимыми. Скорее всего, это не та функциональность, которую вы хотите. Вы также можете изменить разрешенные типы файлов на [NSArray arrayWithObject:@"pdf", @"PDF", nil]
для систем, чувствительных к регистру. runModalForTypes
должен быть массивом типов файлов. Измените свой код, чтобы он выглядел так:
// WORKING :)
NSOpenPanel *panel;
NSArray* fileTypes = [NSArray arrayWithObjects:@"pdf", @"PDF", nil];
panel = [NSOpenPanel openPanel];
[panel setFloatingPanel:YES];
[panel setCanChooseDirectories:NO];
[panel setCanChooseFiles:YES];
[panel setAllowsMultipleSelection:YES];
[panel setAllowedFileTypes:fileTypes];
int i = [panel runModal];
if(i == NSOKButton){
return [panel URLs];
}
Swift 4.2:
let fileTypes = ["jpg", "png", "jpeg"]
let panel = NSOpenPanel()
panel.canChooseFiles = true
panel.canChooseDirectories = false
panel.allowsMultipleSelection = false
panel.allowedFileTypes = fileTypes
panel.beginSheetModal(for: window) { (result) in
if result.rawValue == NSApplication.ModalResponse.OK.rawValue {
// Do something with the result.
let selectedFolder = panel.urls[0]
print(selectedFolder)
}
}