2015-01-19 8 views
6

में प्रोग्रामेटिक रूप से एनएसविंडो बनाएं I स्विफ्ट का उपयोग करके प्रोग्रामेटिक रूप से एक नई विंडो बनाना चाहते हैं लेकिन मुझे सफल होने का कोई तरीका नहीं मिला। यह सरल कोड एक नई विंडो प्रदर्शित नहीं करता है। मेरे कोड में क्या गलत है?स्विफ्ट

@NSApplicationMain 
class AppDelegate: NSObject, NSApplicationDelegate { 

    @IBOutlet weak var window: NSWindow! 

    func applicationDidFinishLaunching(aNotification: NSNotification) { 
     let win = NSWindow(contentRect: NSMakeRect(100, 100, 600, 200), 
      styleMask: NSResizableWindowMask, 
      backing: NSBackingStoreType.Buffered, defer: true) 
     let controller = NSWindowController(window: win) 
     controller.showWindow(self) 
     win.makeKeyAndOrderFront(win) 
    } 
} 
+3

"क्या मेरी कोड के साथ गलत क्या है?" एक बात यह है कि इसके साथ स्पष्ट रूप से गलत यह है कि सभी चर स्थानीय हैं। तो जब आपका कार्य समाप्त हो जाता है तो आपकी खिड़की नियंत्रक और आपकी खिड़की धुएं के पफ में गायब हो जाती है। वे पूरी तरह अस्थायी वस्तुएं हैं। – matt

+0

मेरी इच्छा है कि इस पर कुछ प्रकार का उचित दस्तावेज था। कोई नहीं मिला। – DisplayName

उत्तर

6
import Cocoa 

@NSApplicationMain 
class AppDelegate: NSObject, NSApplicationDelegate { 
    let newWindow = NSWindow(contentRect: NSMakeRect(0, 0, NSScreen.main()!.frame.midX, NSScreen.main()!.frame.midY), styleMask: [.closable], backing: .buffered, defer: false) 
    func createNewWindow() { 
     newWindow.title = "New Window" 
     newWindow.isOpaque = false 
     newWindow.center() 
     newWindow.isMovableByWindowBackground = true 
     newWindow.backgroundColor = NSColor(calibratedHue: 0, saturation: 1.0, brightness: 0, alpha: 0.7) 
     newWindow.makeKeyAndOrderFront(nil) 
    } 
    func applicationDidFinishLaunching(_ notification: Notification) { 
     createNewWindow() 
    } 
    func applicationWillTerminate(_ notification: Notification) { 
     // Insert code here to tear down your application 
    } 
} 

Window Style Mask

+0

यदि इस शैली में किया गया तो ऑटो-लेआउट शाही दर्द होना चाहिए :) –

+0

वास्तव में यह है, लेकिन जीथब (https://github.com/SnapKit/Masonry) पर चिनाई पर एक नज़र डालें और वहां कुछ अन्य विकल्प भी हैं (ReactiveCocoaLayout एक अच्छा है यदि आपकी आरएक्स/प्रतिक्रियाशील) –

+3

वह मेरे लिए काम नहीं कर रहा है – DisplayName