Mad*_*erg 4 macos cocoa nswindow nsviewcontroller swift
我已经使用下拉列表创建了一个statusBar应用程序.我想从该下拉列表打开一个settingsWindow.我已经使用自己的ViewController创建了设置窗口.
问题是我无法弄清楚如何实例化并显示我所做的settingsWindow.我试图跟踪互联网上的每个线程,但没有任何成功.
我的Viewcontroller:
class SettingsViewController: NSViewController {
@IBOutlet var ipAddress: NSTextField!
@IBOutlet var port: NSTextField!
@IBAction func connect(sender: AnyObject) {}
override func viewDidLoad() {
super.viewDidLoad()
}
}
Run Code Online (Sandbox Code Playgroud)
我的AppDelegate:
class AppDelegate: NSObject, NSApplicationDelegate {
@IBOutlet var statusMenu: NSMenu!
var statusItem: NSStatusItem?
var tcpService: TcpService = TcpService()
func applicationDidFinishLaunching(aNotification: NSNotification?) {
let bar = NSStatusBar.systemStatusBar()
statusItem = bar.statusItemWithLength(20)
statusItem!.menu = statusMenu
statusItem!.image = NSImage(byReferencingFile: NSBundle.mainBundle().pathForResource("16*16", ofType: "png"))
statusItem!.highlightMode = true
tcpService.initOutputStream("192.168.1.1", Port: 8888)
}
func applicationWillTerminate(aNotification: NSNotification?) {
// Insert code here to tear down your application
}
@IBAction func openSettings(sender: AnyObject) {
// open settings for ip and port optional port
}
}
Run Code Online (Sandbox Code Playgroud)
小智 9
在快速3:
var myWindow: NSWindow? = nil
let storyboard = NSStoryboard(name: "Main",bundle: nil)
let controller: EditorViewController = storyboard.instantiateController(withIdentifier: "editorViewController") as! ViewController
myWindow = NSWindow(contentViewController: controller)
myWindow?.makeKeyAndOrderFront(self)
let vc = NSWindowController(window: myWindow)
vc.showWindow(self)
Run Code Online (Sandbox Code Playgroud)
Geo*_*rev -1
我不是 100% 完全理解你的问题,但假设你正在使用故事板(如果你是新手,你应该使用故事板),在你的 applicationDidFinishLaunching 方法中添加几行将会有所帮助:
var myWindow: NSWindow? = nil
let storyboard = NSStoryboard(name: "Main",bundle: nil)
let controller: SettingsViewController = storyboard?.instantiateControllerWithIdentifier("SettingsViewController") as SettingsViewController
myWindow = controller.window
myWindow?.makeKeyAndOrderFront(self)
Run Code Online (Sandbox Code Playgroud)
不要忘记在 IB 中设置 Storyboard ID(在上面的示例中设置为 SettingsViewController)!