MacOS app选择文件目录和文件NSOpenPanel使用swift代码

这篇博客介绍了如何在Mac应用开发中使用NSOpenPanel控件,让用户选择文件或文件夹。通过设置canChooseDirectories和canChooseFiles属性,可以分别实现选择文件夹或文件的功能,并允许多选。点击按钮后,会弹出选择窗口,选择的路径将被打印并可用于后续操作,如使用NSWorkspace打开文件位置。
摘要由CSDN通过智能技术生成


Mac app开发跟ios开发有点区别,网上教程比较少
这个例子是,点击按钮以后,打开选择文件夹的窗口,可以多选文件夹,另一个按钮可以多选文件.然后打印出目录

运行效果

请添加图片描述

NSOpenPanel讲解

首先把2个按钮连线到swift文件中,2个按钮代码如下:
NSOpenPanel 创建对象以后通过 设置属性canChooseDirectories和canChooseFiles实现打开文件或者文件夹
通过block beginSheetModal实现打开文件窗口.

代码例子

  var pathUrls = [URL]()//保存选择所有文件的路径数组
    //MARK: - 选择文件
    @IBAction func btnOpenFileClick(_ sender: Any) {
        let openPanel = NSOpenPanel()
        openPanel.prompt = "选择"
        openPanel.canChooseDirectories = false //不允许选择目录
        openPanel.canChooseFiles = true //选择文件
        openPanel.allowsMultipleSelection = true//允许多选
        openPanel.beginSheetModal(for: view.window!) {[unowned self]  result in
            if result != .OK { //result是点击的结果,如果点击确定result == .OK
                print("点击取消")
                return
            }
            //遍历多选的所有路径
            for url in openPanel.urls{
                print("路径是=",url.path)
            }
            pathUrls = openPanel.urls
        }
    }
    //MARK: - 选择目录
    @IBAction func btnOpenDirClick(_ sender: Any) {
        
        let openPanel = NSOpenPanel()
        openPanel.prompt = "选择"
        openPanel.canChooseDirectories = true //
        openPanel.allowsMultipleSelection = true
        openPanel.canChooseFiles = false
        openPanel.beginSheetModal(for: view.window!) { [unowned self]  result in
            if result != .OK {
                print("点击取消")
                return
            }
            //遍历多选的所有路径
            for url in openPanel.urls{
                print("路径是=",url.path)
            }
            pathUrls = openPanel.urls
        }
    }
    //MARK: - 用finder打开文件所在位置
    @IBAction func btnOpenPathClick(_ sender: Any) {
        print("pathUrls=",pathUrls)
        NSWorkspace.shared.activateFileViewerSelecting(pathUrls)
    }

swift代码 demo下载

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值