2013-04-04 80 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

相關問題