Как получить доступ к разделу "Медиа" (фотографии и фильмы) непосредственно из NSOpenPanel в приложении Mac OS X?
Я уже ссылался на эту ссылку
Теперь я использую NSOpenPanel, чтобы открыть папку библиотеки iPhoto.
Вот код, который позволяет открыть.
int i = 0;
NSOpenPanel* openDlg = [NSOpenPanel openPanel];
[openDlg setCanChooseFiles:YES];
[openDlg setAllowedFileTypes:[NSArray arrayWithObjects:@"public.image",@"public.video",nil]];
[openDlg setAllowsMultipleSelection:TRUE];
[openDlg setAllowsOtherFileTypes:NO];
if ( [openDlg runModal] == NSOKButton )
{
NSArray *files = [openDlg URLs];
for( i = 0; i < [files count]; i++ )
{
NSLog(@"File path: %@", [[files objectAtIndex:i] path]);
}
}
Этот код всегда открывает мою папку библиотеки Finder, так как я хочу открыть папку Media Photo и Movies напрямую.
Пожалуйста, дайте мне какое-нибудь решение.
Я приложил здесь один снимок экрана.
С уважением,
2 ответа
Вы можете добавить следующий фрагмент кода:
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error = nil;
NSURL *picturesURL = [fileManager URLForDirectory:NSPicturesDirectory inDomain:NSUserDomainMask appropriateForURL:NULL create:NO error:&error];
NSURL *iPhotoURL = [picturesURL URLByAppendingPathComponent:@"iPhoto Library.photolibrary"];
[openDlg setDirectoryURL:iPhotoURL];
// Now run the dialog
Это не поможет, если пользователь переместил свою библиотеку iPhoto в какое-то нестандартное место.
Существует частный API Apple, который содержит именно тот элемент управления, к которому вы хотите получить доступ; этот элемент управления является ILMediaBrowserView и обеспечивает точно такое же представление, что и в NSOpenDialog. Если вы планируете выпуск приложения в AppStore, не используйте его, но это может быть полезно. Платформа для интеграции в ваш проект для получения этого представления - iLifeMediaBrowser.framework в / System / Library / PrivateFrameworks.