如何在Xcode 6和Storyboard中使用NSToolBar?

 珍希那段情 发布于 2023-01-09 12:03

我一直在尝试构建一个在Xcode 6中使用Swift和Storyboard的Cocoa应用程序,但我怎么能在那里使用NSToolbar

在Xcode 5和xib中,您可以NSToolbar从对象库中添加到任何.xib文件,然后单击添加的工具栏以展开它,并将连接从任何项目拖放到AppDelegate.h文件中.通过这种方式,您可以创建IBActionIBOutlet连接.我确认如果你在Xcode 6中使用Swift和非故事板,也可以这样做.但是,在Xcode 6和Storyboard环境中看起来并非如此.

我首先创建了一个在Xcode 6中使用Storyboard的项目,但后来,我无法NSToolbar在对象库中添加一个到Storyboard中的View Controller.所以我将它添加到Storyboard中的Window Controller的Window对象中.然而,这种方式我不能创建展开的工具栏在任的任何项目的连接AppDelegate.swiftViewController.swift.

所以我的问题是:

创建使用的故事板应用程序是否可行NSToolbar

如果可行,是否在NSToolbarWindow Controller中添加了正确的方法NSToolBar

最后,我如何在那里创建@IBOutlet@IBAction连接?

UPDATE

我发现@GeorgeVillasboas接受的答案只适用于@IBAction.我仍在寻找如何创建@IBOutlet连接...

2 个回答
  • 我遇到了同样的问题.该解决方案适用于Objective-C和Swift项目.

    在OSX上使用Storyboard,它会创建一个NSWindow实例,并将其作为其窗口内容Segue转移到另一个NSViewController,如您所述.

    在ViewController上,创建标准IBAction以在单击工具栏时接收操作.要使用NSToolbar连接它,只需从NSToolbarItem控制拖动(或左键拖动)到FirstResponder对象,如下图所示.

    在XCode 6上连接NSToolbar

    这将打开一个巨大的可用连接列表.您的IBAction将在该列表中.只是选择它,你很高兴去.

    希望这可以帮助!

    2023-01-09 12:07 回答
  • 这是一个不依赖于运行时连接的答案 - @ cdalvaro的答案大部分用于某些应用程序,但是不完整,它需要ViewController知道人工NSWindowController,而不是感觉正确.

    与@cdalvaro一样,第一步是构建自己的子类NSWindowController,并将Storyboard WC设置为该类.然后,您可以在新的WindowController中创建与NSToolbar(@IBOutlets和@IBActions)的所有连接.到现在为止还挺好.

    我在其他任何地方都没有看到的最后一步是如何引用WindowController中的ViewController - 你无法创建@IBOutlet它 - 出于我们首先到达这里的原因 - 你不能在Storyboard中的场景中创建引用.但是,WindowController必须具有对ViewController的引用,它确实...self.window!.contentViewController! as! ViewController

    这是一个完整的WindowController,带有一个复选框,用于设置ViewController中的值,而ViewController 不需要知道任何内容 ......

    class MyWindowController: NSWindowController {
    
        var viewController: ViewController {
            get {
                return self.window!.contentViewController! as! ViewController
            }
        }
    
        @IBOutlet weak var aSwitch: NSButton!
        @IBAction func toolbarActionA(sender: AnyObject) {
            println("toolbarActionA")
            self.viewController.a = !self.viewController.a
            self.aSwitch.state = self.viewController.a ? NSOnState : NSOffState
        }
    }
    

    2023-01-09 12:07 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有