我正在尝试在我的viewcontroller中为我的窗口控制器中的工具栏项添加一个插座。我曾试过玩第一响应者和绑定但未能找到任何解决方案。
回答的类似问题提供了一些见解,但除了仍然询问如何在评论中添加它们之外,没有人提到IBOutlets的任何内容。答案已被接受,所以我假设没有人会加入它。
How to use NSToolBar in Xcode 6 and Storyboard?
我的问题根本不清楚,我希望能够将它添加到我的故事板程序中
@IBOutlet weak var Mytoolbar: NSToolbarItem!
func enabletoolbar()
{
Mytoolbar.action = "FunctionIn.ViewController.swift"
Mytoolbar.enabled = true
}
答案 0 :(得分:1)
通过将IBOutlets添加到我的自定义NSWindow类并使用故事板将我的视图连接到IBOutlets,我找到了一个不错的解决方法。然后,我从我的NSViewController类中访问这些视图,方法是从自定义的NSWindow中获取它们。
答案 1 :(得分:0)
基本上,您需要将操作和其他属性设置为toolbaritem而不是工具栏中。所以尝试一样。
答案 2 :(得分:0)
我最终在我的视图控制器中执行此操作似乎正常工作
override func viewDidLayout() {
var x = self.view.window?.toolbar?.items[1].label
println(x)
if(self.view.window?.toolbar?.items[0].label! != "Check")
{
toobarediting()
}
println("didlay")
}
func toobarediting() {
self.view.window?.toolbar?.insertItemWithItemIdentifier("Check", atIndex: 0)
}
func toolbarcheck(functiontoset: Selector) {
var y = self.view.window?.toolbar?.items[0] as NSToolbarItem
y.action = functiontoset
if(functiontoset != nil)
{
y.enabled = true
}
}
它似乎允许我使工具栏按钮可点击/不可点击,当我需要它来改变它似乎比笨重和容易出错
myitem.enable = fale
myitem.action = nil
这真的是osx中基于故事板的应用程序的最佳方式吗?
答案 3 :(得分:0)
虽然连接 IBActions 通过使用 First Responder 或通过向场景添加“对象”,然后将其类更改为窗口的视图控制器类来工作,但这对您想要的 IBOutlets 和委托没有帮助指向视图控制器。
这里有一个解决方法:
将工具栏添加到视图控制器,而不是其窗口。这样,您可以轻松地在 View Controller Scene 中建立所有 IBOutlet 连接。我已经这样做了多年,没有发现任何问题,即使在使用 Tabs 时也是如此。
然后,您必须在代码中分配窗口的工具栏。例如。像这样:
@interface ViewController ()
@property (weak) IBOutlet NSToolbar *toolbar; // connect this in your storyboard to the Toolbar that you moved to the View Controller Scene
@end
- (void)viewWillAppear {
[super viewWillAppear];
self.view.window.toolbar = self.toolbar;
}