可可 - 直观地编辑/设计NSView

时间:2015-06-01 14:20:23

标签: xcode swift cocoa nsview

如何在Xcode中直观地设计NSView?我正在尝试使用statusMenu构建一个statusBar应用

Menu Custom View

正如您在上面看到的那样,对象出现但我无法直观地编辑它,结果就是这样:

Result using Storyboard only

我试图使用XIB文件(只有一个NSView,没有ViewController),但我不能将XIB中的NSView放入AppDelegate。我尝试了另一种方法并设法使用XIB文件,但后来我无法使用故事板。

你对这种情况有什么看法吗?

更新

感谢Max回答我的问题。我之前尝试过,但失败了。你的评论后我又试了一遍,但仍然没有运气。我就是这样做的 Tried

我创建了一个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)

}

我在项目中的文件

Files I have

1 个答案:

答案 0 :(得分:1)

即使您不需要视图控制器,也可以使用它们来设计视图。在故事板中创建一个,按照您想要的方式编辑视图。

然后,您可以通过在故事板外创建一个viewController并使用其view属性将视图附加到NSStatusBarItem

来使用该视图

我在代码中的说法:

    let storyboard = NSStoryboard(name: "Main", bundle: nil)
    let viewController = storyboard?.instantiateControllerWithIdentifier("MyViewController") as! NSViewController
    let view = viewController.view

我假设您要在视图中添加正常运行的代码。例如,要响应按钮单击,您必须继承NSViewController,然后实现您将添加到AppDelegate的代码。

如果您需要更多解释,请随时写信给我:)