NSOpenPanel选择文件并填充NSTableView

时间:2015-10-08 08:08:48

标签: macos swift cocoa nstableview nsopenpanel

我想知道如何通过首先通过NSOpenPanel获取文件来填充NSTableView。它类似于在运行时从我的文件夹中选择后列出/显示文件。

编辑:所以我有这种工作(通过绑定)....但是除非我点击表格顶部,否则我无法显示它。如果您打开以获取更多文件,则显示屏将不会再次更新。

我觉得这可能是因为controllerArray的Received Action add:没有链接。 下面的代码就是我现在所拥有的

@IBAction func openPanel(sender: NSButton) {
    let openPanel = NSOpenPanel()
    openPanel.allowedFileTypes = ["pdf"]
    openPanel.canChooseFiles = true
    openPanel.allowsMultipleSelection = false
    openPanel.canChooseDirectories = true
    openPanel.beginWithCompletionHandler { (result) -> Void in

        if result == NSFileHandlingPanelOKButton {
            var url:NSURL = openPanel.URL!
            var pdfFile: PDFModel = PDFModel()
            pdfFile.initWithURL(url)
            self.insertFileLibrary(pdfFile, inFileListAtIndex: self.fileLibrary.count)

        }
    }
}


func insertFileLibrary(pdfModel:PDFModel, inFileListAtIndex index:Int){
    fileLibrary.insertObject(pdfModel, atIndex: index)       
}

func removeObjectFromFileLibraryAtIndex(index:Int){
        fileLibrary.removeObjectAtIndex(index)
    }

1 个答案:

答案 0 :(得分:0)

绑定使用KVO,你必须以一个由willChange ...和didChange包围的KVO方式变换fileLibrary。让NSArrayContoller这样做更容易。您可以使用NSArrayController的addObject(s),insertObject(s)和removeObject(s)方法。