int i;NSOpenPanel* openDlg = [NSOpenPanel openPanel];[openDlg setCanChoosefiles:YES];[openDlg setCanChooseDirectorIEs:YES];[openDlg setPrompt:@"Select"];Nsstring *filename = [pathAsNsstring lastPathComponent]; [filename stringByDeletingPathExtension];if ([openDlg runModalForDirectory:nil file:nil] == NSOKbutton ){ NSArray* files = [openDlg filenames]; for( i = 0; i < [files count]; i++ ) { [files objectAtIndex:i]; }}
非常感谢帮忙.
解决方法 您的代码已经在处理用户选择的文件,您只是没有对它们执行任何 *** 作.从-filenames方法返回的数组包含用户选择为Nsstring对象的文件的路径.如果他们只选择了一个文件,则数组中只有一个对象.如果他们没有选择任何文件,则该数组将为空.
if ([openDlg runModalForDirectory:nil file:nil] == NSOKbutton ){ NSArray* files = [openDlg filenames]; for(Nsstring* filePath in [openDlg filenames]) { NSLog(@"%@",filePath); //do something with the file at filePath }}
如果您只希望用户能够选择单个文件,则在配置面板时调用[openPanel setAllowsMultipleSelection:NO].这样,文件名数组中最多只有一个条目.
正如@VenoMKO指出的那样,-filenames方法现已弃用,您应该使用-URLs方法.这将返回文件NSURL对象的数组,而不是Nsstrings数组.由于SNow Leopard中的几乎所有文件处理API都经过修改以获取URL,因此这将是首选选项.
总结以上是内存溢出为你收集整理的objective-c – 获取文件路径文件打开对话框可可?全部内容,希望文章能够帮你解决objective-c – 获取文件路径文件打开对话框可可?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)