2015-04-13 22 views
6

Diğer cevaplarda etrafa baktım ama hiçbir şey benim durumumda yardımcı olmayacak gibi görünüyor.NSOpenPanel sayfa olarak

Bir düğme için bir IBAction içeren bir viewController sınıfım var. Bu düğme o ViewController bir tabaka gibi bir NSOpenPanel açmalı:

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

sorun myFileDialog.beginSheetModalForWindow geliyor (..), yukarıdaki hattı ile çalışır, ama bu bir tabaka etkisi

cevap

10

değil Pencerenizdeki panelinizden beginSheetModalForWindow numaralı telefonu aramanız ve bir tamamlama bloğu kullanmanız gerekir:

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

Tam olarak öyle! Teşekkürler! @ericd – OrangePot