2015-10-08 3 views
0

Мне было интересно, как я могу заполнить NSTableView, сначала получив файлы через NSOpenPanel. Это как отображение/отображение файлов после выбора из моих папок во время выполнения.NSOpenPanel для выбора файлов и заполнения NSTableView

EDIT: Итак, у меня есть такой вид работы (через привязку) .... однако я не могу его отобразить, если я не щелкнул в верхней части таблицы. И если вы откроете для получения большего количества файлов, дисплей вообще не будет обновляться.

Я чувствую, что это возможно потому, что добавленное действие controllerArray 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) 
    } 
+0

Если вы поставили точку останова в addToTable, то есть файлList, table и doc, что вы ожидаете? – Willeke

+0

Извините, я не следую .... – Sandy

ответ

0

Наручники использовать КВО, вы должны мутировать fileLibrary таким образом, КВО в окружении willChange ... и didChange .... Легче позволить NSArrayContoller сделать это. Вы можете использовать методы addObject (s), insertObject (s) и removeObject (s) для NSArrayController.

Смежные вопросы