【问题标题】:cocoa - Edit/Design NSView visuallycocoa - 视觉编辑/设计 NSView
【发布时间】: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作为主界面设计工具,那就更好了。
  • 好的,我会发布答案

标签: xcode swift cocoa nsview


【解决方案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。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-19
  • 1970-01-01
  • 2023-04-10
  • 2014-07-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多