Как получить доступ к разделу "Медиа" (фотографии и фильмы) непосредственно из NSOpenPanel в приложении Mac OS X?

Я уже ссылался на эту ссылку

IMedia

Теперь я использую 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.

Другие вопросы по тегам