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的主要内容,如果未能解决你的问题,请参考以下文章

Cocoa nsview更改光标

Cocoa NSView 子视图阻止拖放

如何使用Swift在Cocoa App中设置NSView的颜色?

Cocoa - 从 nib 加载视图并将其显示在 NSView 容器中,作为子视图

如何使用 Swift 在 Cocoa App 中设置 NSView 的颜色?

在 NSView 中拖放