【问题标题】:OS X app in Swift without XIB没有 XIB 的 Swift 中的 OS X 应用程序
【发布时间】:2015-01-18 03:21:45
【问题描述】:

有没有人想出一种方法来引导基于 NSWindow 的应用程序而不使用 XIB(或根本不使用 IB)?在 iOS 中,这相当简单;

func application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool {
        window = UIWindow(frame: UIScreen.mainScreen().bounds)

        window!.rootViewController = ViewController(nibName: nil, bundle: nil)
        window!.makeKeyAndVisible()
        window!.backgroundColor = UIColor.whiteColor()
        return true
    }

但我无法让它在桌面应用程序中正常工作。NSWindow 没有 makeKeyAndVisible() 方法,并且 NSApplicationDelegate 似乎有十几个 func application() 的覆盖。什么是神奇的咒语?

【问题讨论】:

  • makeKeyAndOrderFront(nil) 这就是你要找的东西
  • 你为什么接受了答案,却没有投票?

标签: ios macos cocoa swift nswindow


【解决方案1】:
import Cocoa

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
    @IBOutlet weak var window: NSWindow!
    let newWindow = NSWindow(contentRect: NSScreen.mainScreen()!.frame, styleMask: NSBorderlessWindowMask, backing: NSBackingStoreType.Buffered, defer: false)
    func applicationDidFinishLaunching(aNotification: NSNotification) {
        // Insert code here to initialize your application
        newWindow.opaque = false
        newWindow.movableByWindowBackground = true
        newWindow.backgroundColor = NSColor.whiteColor()
        newWindow.makeKeyAndOrderFront(nil)
    }
    func applicationWillTerminate(aNotification: NSNotification) {
        // Insert code here to tear down your application
    }

}

【讨论】:

  • 我不明白——这仍然需要我的主菜单 xib
  • Leo,把这个答案复制到相同的问题中真的很糟糕。
  • 没用。为此,您仍然需要 MainMenu.xib。
  • 能否请您不接受这个答案,以便我删除它?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多