在标签上返回文件名?

时间:2011-06-27 21:24:47

标签: cocoa file return filenames

我正在开发一个加密工具,我有一个文件选择器,用户可以选择要加密的文件。我的问题相当容易。用户单击文件选择器中的“选择”按钮后,必须将文件名返回到应用程序上的标签。问题是我无法进入保持选择按钮以连接到IBAction的窗口。用户单击选择后,如何将文件名返回到该标签?有人可以上传代码吗?我现在有点像菜鸟了,所以请用简单的语言说说......一步一步的指示将非常感谢

非常感谢

以下是文件选择器的代码:

- (IBAction)fileChooser:(id)sender {
int i;
NSOpenPanel* openDlg = [NSOpenPanel openPanel];
[openDlg setCanChooseFiles:YES];
[openDlg setCanChooseDirectories:YES];
[openDlg setPrompt:@"Select"];
if ([openDlg runModalForDirectory:nil file:nil] == NSOKButton )
{
    NSArray* files = [openDlg filenames];
    for( i = 0; i < [files count]; i++ )
    {
        [files objectAtIndex:i];

    }

}

}

1 个答案:

答案 0 :(得分:1)

“将文件名返回到该标签”没有意义。函数或方法仅将值返回给调用它的函数或方法;这是C和Objective-C中唯一“返回”的意思。此外,当函数或方法返回时,结束。它已不再运行。它将程序的控制权返回给调用它的函数或方法。

所以从循环中返回一个值在这里没有意义(该方法只处理第一个文件名),并且返回一个值“to [an object]”没有任何意义。

您需要在实现fileChooser:的类中创建字段的出口(标签是一种NSTextField),并在nib编辑器中挂起该出口。然后,您可以使用该出口告诉该字段设置其stringValue

(重要提示:与Cocoa Touch不同,大多数AppKit类不使用正式属性。您必须向该字段发送setStringValue:消息。)

出口由Cocoa Fundamentals Guide覆盖,您可以在AppKit framework reference中找到NSTextField文档。

另一件事:由于用户选择多个文件是可能且非常合理的,因此您应该处理这种情况。简单地将文本字段的字符串值依次设置为每个文件名将使其仅显示数组中的最后一个文件名 - 与将其设置为第一个文件名并返回完全不同。一旦你使文本字段工作,你应该用表视图替换它。

另一方面,如果您不想支持多个文件,那么(1)为什么? (2)考虑设置开放式面板以禁止多项选择。 (请参阅我之前关于该方向的文档引用的答案。)然后,您可以假设,当响应为“OK”时,filenames数组只包含一个项目,并完全切断循环。