【问题标题】:NSOpenPanel as sheetNSOpenPanel 作为工作表
【发布时间】:2015-04-13 00:45:11
【问题描述】:

我查看了其他答案,但似乎对我的情况没有任何帮助。

我有一个 viewController 类,其中包含一个按钮的 IBAction。这个按钮应该从该 viewController 中打开一个 NSOpenPanel 作为工作表:

class ViewController: NSViewController {
@IBAction func folderSelection(sender: AnyObject) {
    var myFiledialog: NSOpenPanel = NSOpenPanel()
    myFiledialog.prompt = "Select path"
    myFiledialog.worksWhenModal = true
    myFiledialog.allowsMultipleSelection = false
    myFiledialog.canChooseDirectories = true
    myFiledialog.canChooseFiles = false
    myFiledialog.resolvesAliases = true

    //myFiledialog.runModal()

    myFiledialog.beginSheetModalForWindow(self.view.window!, completionHandler: nil)


    var chosenpath = myFiledialog.URL
    if (chosenpath!= nil)
    {
        var TheFile = chosenpath!.absoluteString!
        println(TheFile)
        //do something with TheFile
    }
    else
    {
        println("nothing chosen")
    }
}
}

问题来自 myFileDialog.beginSheetModalForWindow(..) ,它适用于上面的行,但这不是工作表效果

【问题讨论】:

    标签: swift nsopenpanel


    【解决方案1】:

    您需要从窗口的面板中调用beginSheetModalForWindow,并使用完成块:

    let myFiledialog = NSOpenPanel()
    myFiledialog.prompt = "Select path"
    myFiledialog.worksWhenModal = true
    myFiledialog.allowsMultipleSelection = false
    myFiledialog.canChooseDirectories = true
    myFiledialog.canChooseFiles = false
    myFiledialog.resolvesAliases = true
    myFiledialog.beginSheetModalForWindow(window, completionHandler: { num in
        if num == NSModalResponseOK {
            let path = myFiledialog.URL
            print(path)
        } else {
            print("nothing chosen")
        }
    })
    

    【讨论】:

      【解决方案2】:

      斯威夫特 5

      let dialog = NSOpenPanel()
      dialog.beginSheetModal(for: self.view.window!){ result in
          if result == .OK, let url = dialog.url {
              print("Got", url)
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-26
        • 1970-01-01
        相关资源
        最近更新 更多