2015-04-13 12 views
6

Ive ha guardato intorno ad altre risposte, ma nulla sembra aiutare il mio caso.NSOpenPanel come foglio

Ho una classe viewController che contiene un IBAction per un pulsante. Questo pulsante dovrebbe aprire un NSOpenPanel come un foglio da quella viewController:

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") 
    } 
} 
} 

Il problema deriva dal myFileDialog.beginSheetModalForWindow (..), funziona con la linea di cui sopra, ma che non è un effetto foglio

risposta

10

È necessario chiamare beginSheetModalForWindow dal pannello sulla finestra e utilizzare un blocco di completamento:

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") 
    } 
}) 
+1

Questo è esattamente! Grazie! @ericd – OrangePot

Problemi correlati