NSSavePanel选择文件名的一部分

时间:2010-04-18 18:10:19

标签: objective-c cocoa selection nssavepanel

如何设置在NSSavePanel中选择的文件名部分?我只想选择文件名而不是文件扩展名。

这是我注意到的。如果我setAllowedFileTypes:对于保存面板,则仅选择文件名但不选择文件扩展名。但是,如果我没有设置允许的文件类型,则会选择文件扩展名和文件名。

我不想使用setAllowedFileTypes,但我仍然想控制选择,以便不选择文件扩展名。可以这样做吗?

2 个答案:

答案 0 :(得分:2)

我明白了。之前我不知道这个,但是如果正在编辑某个包含文本的对象,则每个窗口都有一个字段编辑器。因为这样的保存面板有一个,因为正在编辑文件名字段。字段编辑器只是一个NSTextView,因此有一个方法setSelectedRange:。所以我使用了这些知识,这就是解决方案。只要您只想选择文件名,就可以在NSSavePanel上调用它。

NSText* editor = [savePanel fieldEditor:NO forObject:nil];
if (editor) {
    NSString* nameFieldString = [savePanel nameFieldStringValue];
    NSString* nameFieldExt = [nameFieldString pathExtension];
    if (nameFieldExt != nil) {
        NSInteger newLength = [nameFieldString length]-[nameFieldExt length]-1;
        [editor setSelectedRange:NSMakeRange(0, newLength)];
    }
}

答案 1 :(得分:0)

如果只希望保存面板突出显示文件名,请设置

allowedFileTypes

包括您在其中指定的默认文件类型

nameFieldStringValue

您可能还需要指定。

allowsOtherFileTypes = true;