Bla*_*ard 13 xcode cocoa storyboard nstoolbar swift
我一直在尝试构建一个在Xcode 6中使用Swift和Storyboard的Cocoa应用程序,但我怎么能在那里使用NSToolbar?
在Xcode 5和xib中,您可以NSToolbar从对象库中添加到任何.xib文件,然后单击添加的工具栏以展开它,并将连接从任何项目拖放到AppDelegate.h文件中.通过这种方式,您可以创建IBAction或IBOutlet连接.我确认如果你在Xcode 6中使用Swift和非故事板,也可以这样做.但是,在Xcode 6和Storyboard环境中看起来并非如此.
我首先创建了一个在Xcode 6中使用Storyboard的项目,但后来,我无法NSToolbar在对象库中添加一个到Storyboard中的View Controller.所以我将它添加到Storyboard中的Window Controller的Window对象中.然而,这种方式我不能创建展开的工具栏在任的任何项目的连接AppDelegate.swift或ViewController.swift.
所以我的问题是:
NSToolbar?NSToolbarWindow Controller中添加了正确的方法NSToolBar?@IBOutlet和@IBAction连接?我发现@GeorgeVillasboas接受的答案只适用于@IBAction.我仍在寻找如何创建@IBOutlet连接...
Geo*_*oas 25
我遇到了同样的问题.该解决方案适用于Objective-C和Swift项目.
在OSX上使用Storyboard,它会创建一个NSWindow实例,并将其作为其窗口内容Segue转移到另一个NSViewController,如您所述.
在ViewController上,创建标准IBAction以在单击工具栏时接收操作.要使用NSToolbar连接它,只需从NSToolbarItem控制拖动(或左键拖动)到FirstResponder对象,如下图所示.

这将打开一个巨大的可用连接列表.您的IBAction将在该列表中.只是选择它,你很高兴去.
希望这可以帮助!
Gri*_*mxn 11
这是一个不依赖于运行时连接的答案 - @ 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
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8837 次 |
| 最近记录: |