2013-04-04 77 views
0

我已经refered此链接如何在Mac OS X应用程序中直接从NSOpenPanel访问媒体部分(照片和电影)?

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库文件夹,因为我想直接打开媒体照片和电影文件夹。

请给我任何解决方案。

我在这里附上了一个截图。

enter image description here

感谢&问候,

回答

2

也可以考虑添加下面的一小段代码片段:如果用户提出他的iPhoto图库一些非

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 

这将不利于标准的位置。

+0

您的代码正在工作,非常感谢。但我无法点击视频。任何其他额外的东西所需的? – 2013-04-05 03:04:44

+0

现在完成了哥们,我只是改变了allowFileType到@“public.video”替换@“public.movi​​e”并且工作.. – 2013-04-05 03:10:36

+0

嗨jaggie_Gamer!我想用openPanel做一个快速测试,答案aLevelOfIndirection回答了你,但我没有像你这样的结果;我的openPanel显示了iPhoto Library软件包的内容。你有没有在openPanel上添加任何选项,比如setCanChooseDirectories或setTreatsFilePackagesAsDirectories;将两个设置为NO。 – thebenjiman 2013-04-29 09:45:48

0

有一个Apple的私有API,它完全包含您想要访问的控件; 此控件是ILMediaBrowserView并提供了与NSOpenDialog中的视图相同的准确的。如果您正在计划应用程序版本的应用程序不使用它,但它可以是有用的。整合到您的项目以获得该视图的框架是iLifeMediaBrowser.framework/系统/库/ PrivateFrameworks

+0

好的建议。但我也去应用程序商店发布.. – 2013-04-29 15:58:03

+0

@thebenjiman:你知道你是否可以设置一个标准的开放面板来自动选择照片媒体项目,以便这个浏览器出现? – Dalmazio 2016-08-18 22:41:16

相关问题