如何在 NSApplicationDelegate 上加载 NSViewController
Posted
技术标签:
【中文标题】如何在 NSApplicationDelegate 上加载 NSViewController【英文标题】:How to load NSViewController on a NSApplicationDelegate 【发布时间】:2015-12-19 16:49:55 【问题描述】:我正在尝试在我的 appDelegate 类上加载 ViewController。像这样:
class AppDelegate: NSObject, NSApplicationDelegate
@IBOutlet weak var window: NSWindow!
var viewController = HomeViewController()
func applicationDidFinishLaunching(aNotification: NSNotification)
self.window.backgroundColor = NSColor(rgba: "#02303A")
self.viewController.view.frame = CGRectMake(0, 0, CGRectGetWidth(self.window.frame), CGRectGetHeight(self.window.frame))
self.window.contentView?.addSubview(self.viewController.view)
我的视图控制器很简单,只是:
import PureLayout
class HomeViewController : NSViewController
let search : NSSearchField =
let search = NSSearchField.newAutoLayoutView()
return search
()
override func loadView()
super.loadView()
self.view.layer?.backgroundColor = NSColor.blackColor().CGColor
self.view.addSubview(search)
但是当我编译项目时,日志返回:
带有完整源代码的仓库:Github
有人知道可以是什么吗?我在我的 ios 项目上执行此操作,并且效果很好。
【问题讨论】:
【参考方案1】:-
您没有属于您的视图控制器的 xib 文件,因此第一步是为 视图添加一个新文件:
-
在您新创建的 xib 文件中,选择 File's Owner 占位符,然后在 Inspector 中,将其自定义类设置为您的视图控制器子类:
-
最后,将视图控制器 (文件的所有者) 的 view 出口连接到自定义视图对象。
(在此视图中为视图控制器构建用户界面,而不是在主 nib 中。)
【讨论】:
以上是关于如何在 NSApplicationDelegate 上加载 NSViewController的主要内容,如果未能解决你的问题,请参考以下文章
UIApplicationDelegate 与 NSApplicationDelegate、MainMenu.xib
从 ShouldTerminate 返回 NSTerminateLater 后,NSApplicationDelegate 没有延迟调用?
如何确认 AppDelegate 的 ObservableObject?