cocoa - 视觉编辑/设计 NSView
Posted
技术标签:
【中文标题】cocoa - 视觉编辑/设计 NSView【英文标题】:cocoa - Edit/Design NSView visually 【发布时间】:2015-06-01 14:20:22 【问题描述】:如何在 Xcode 中直观地设计 NSView?我正在尝试仅使用 statusMenu 构建一个 statusBar 应用程序
正如你在上面看到的,对象出现了,但我无法在视觉上编辑它,结果是这样的:
我尝试使用 XIB 文件(只有 NSView,没有 ViewController),但我无法将 XIB 中的 NSView 放入 AppDelegate。我尝试了另一种方法并设法使用了 XIB 文件,但是我无法使用情节提要。
你对这种情况有什么想法吗?
更新
感谢 Max 回答我的问题。我实际上之前尝试过但失败了。在您发表评论后,我再次尝试了它,但仍然没有运气。这是我的做法
我创建了一个 ViewController 然后我将其视图更改为 MenuCustomView (NSView) 这是 AppDelegate 中的代码
let statusBar = NSStatusBar.systemStatusBar().statusItemWithLength(-1)
var menuCustomView = NSView()
func applicationDidFinishLaunching(aNotification: NSNotification)
// Insert code here to initialize your application
let statusIcon = NSImage(named: "statusIcon")
let statusMenu = NSMenu()
statusBar.image = statusIcon
statusBar.menu = statusMenu
let menuItem = NSMenuItem()
menuItem.title = "title"
var vc = ViewController()
menuCustomView = vc.view
menuItem.view = menuCustomView
statusMenu.addItem(menuItem)
我在项目中的文件
【问题讨论】:
如果你只有一个视图,为什么需要故事板? 我可能还有其他人在进一步发展,我不想被限制。我更喜欢 Storyboard,它很整洁。所以如果有什么办法可以把Storyboard作为主界面设计工具,那就更好了。 好的,我会发布答案 【参考方案1】:即使您不需要视图控制器,也可以使用它们来设计视图。在情节提要中创建一个,以您想要的方式编辑视图。
然后您可以通过在情节提要中创建一个 viewController 并使用其 view 属性将视图附加到 NSStatusBarItem
来使用该视图
我在代码中的话:
let storyboard = NSStoryboard(name: "Main", bundle: nil)
let viewController = storyboard?.instantiateControllerWithIdentifier("MyViewController") as! NSViewController
let view = viewController.view
我假设您想将功能代码添加到视图中。例如,要响应按钮单击,您必须继承 NSViewController 的子类,然后实现您将添加到 AppDelegate 的代码。
如果您需要更多解释,请随时给我写信:)
【讨论】:
我在尝试(再次)与您的想法后更新了问题。还是行不通。请帮助我更多。非常感谢 编辑了我的答案,希望能帮到你! 成功了。非常感谢,麦克斯!唯一剩下的是我不明白为什么我可以通过使用“let vc = ViewController()”创建一个新的 if 实例来实例化控制器? 你能回答我上面的问题吗?有什么区别? 当然!使用 ViewController() 创建一个空的 viewController 不会包含您在 IB 中设置的视图,因为与创建的视图没有任何关系。要访问此视图,您需要从情节提要中加载 viewController。以上是关于cocoa - 视觉编辑/设计 NSView的主要内容,如果未能解决你的问题,请参考以下文章
如何使用Swift在Cocoa App中设置NSView的颜色?
Cocoa - 从 nib 加载视图并将其显示在 NSView 容器中,作为子视图