2015-01-19 29 views
6

Tôi muốn tạo lập trình một cửa sổ mới bằng Swift nhưng Tôi không thể tìm thấy cách để thành công. Mã đơn giản này không hiển thị cửa sổ mới. Có gì sai với mã của tôi?Tạo lập trình NSWindow trong Swift

@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

"Có gì sai với mã của tôi?" Một điều rõ ràng là sai với nó là tất cả các biến là cục bộ. Vì vậy, cửa sổ điều khiển của bạn và cửa sổ của bạn cả hai biến mất trong một làn khói khi chức năng kết thúc. Chúng hoàn toàn là những vật thể tạm thời. – matt

+0

Tôi muốn có một số loại tài liệu thích hợp về điều này. Không thể tìm thấy bất kỳ. – DisplayName

Trả lời

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

Bố cục tự động phải là một nỗi đau của hoàng gia nếu được thực hiện theo phong cách này :) –

+0

Thật vậy, nhưng hãy xem Masonry trên github (https://github.com/SnapKit/Masonry) và có một số tùy chọn khác nữa (ReactiveCocoaLayout là một trong những tốt nếu bạn thích RX/Reactive) –

+3

Đó là một trong những không làm việc cho tôi – DisplayName

Các vấn đề liên quan