Objective c 使用Xamarin/XCode在cocoa应用程序中打开文件对话框

Objective c 使用Xamarin/XCode在cocoa应用程序中打开文件对话框,objective-c,xcode,macos,cocoa,modal-dialog,Objective C,Xcode,Macos,Cocoa,Modal Dialog,我正在使用Xamarin/XCode构建一个cocoa桌面应用程序(我是新手)。我需要实现一个类似OpenFileDialog的特性 当我点击“加载文件”时,会弹出一个文件浏览器,让我选择一个文件。选择并按“确定”后,它应该在左侧的文本字段中显示文件路径。我已经尝试使用下面的代码实现了这一点,但是文件浏览器没有弹出。我错过了什么 @synthesize LocationText = _LocationText; @synthesize MazeSolutionText = _MazeSolu

我正在使用Xamarin/XCode构建一个cocoa桌面应用程序(我是新手)。我需要实现一个类似OpenFileDialog的特性

当我点击“加载文件”时,会弹出一个文件浏览器,让我选择一个文件。选择并按“确定”后,它应该在左侧的文本字段中显示文件路径。我已经尝试使用下面的代码实现了这一点,但是文件浏览器没有弹出。我错过了什么

@synthesize LocationText = _LocationText;

@synthesize MazeSolutionText = _MazeSolutionText;

static NSURL * openFiles()
{
    //NSArray * fileTypes = [NSArray arrayWithObjects:@"txt",nil];
    NSOpenPanel* panel = [NSOpenPanel openPanel];
    [panel setAllowsMultipleSelection:NO];
    [panel setCanChooseDirectories:NO];
    [panel setCanChooseFiles:YES];
    [panel setFloatingPanel:YES];
    //[panel setAllowedFileTypes:fileTypes];
    if([panel runModal] == NSModalResponseOK)
    {
        return [panel URL];
    }
    return nil;
}

- (IBAction)LoadFileClicked:(id)sender {

    NSURL * path = openFiles();

    _LocationText.stringValue = path.absoluteString;
}

NSOpenPanel
返回一组
NSURL
对象,因此您应该从if语句返回
[[panel url]lastObject]
。否则,您的代码似乎是correct@AlexanderNorth我做了改变。但是,当我点击“加载文件”按钮时,什么也没有出现。我是否在此处正确触发了模态对话框的启动?您确定按钮已连接到方法本身吗?在
openFiles()
方法中添加一个断点,看看应用程序现在是否停止工作。谢谢:)我正在使用Xamarin和XCode,所以有一些不匹配。已修复。
NSOpenPanel
返回一个
NSURL
对象数组,因此您应该从if语句返回
[[panel url]lastObject]
。否则,您的代码似乎是correct@AlexanderNorth我做了改变。但是,当我点击“加载文件”按钮时,什么也没有出现。我是否在此处正确触发了模态对话框的启动?您确定按钮已连接到方法本身吗?在
openFiles()
方法中添加一个断点,看看应用程序现在是否停止工作。谢谢:)我正在使用Xamarin和XCode,所以有一些不匹配。修好了。