从NSView的自定义类中调用NSWindowController中的func

时间:2016-03-05 00:38:05

标签: macos swift2

对于OS X,我在Swift中有一个“{”作为NSWindowController。我在工作表上放置了一个NSView,在一个名为CustomView的类中有一个自定义控制器。我在工作表和自定义视图控制器中执行的所有操作都可以正常工作。

class MySheet: NSWindowController {

//...

}

class CustomView: NSView {

    override func drawRect(dirtyRect: NSRect) {

        super.drawRect(dirtyRect) {

        // Draw some things...

        }
    }

    override func mouseDown(theEvent: NSEvent) {
        // Change text on a label (or whatever) in MySheet()
    }
}

现在我需要回复CustomView中的用户输入,特别是在视图上单击鼠标,然后在MySheet()中修改标签(或其他控件)。这必须非常简单,但我不知道该怎么做。我遇到的最大绊脚石是我没有MySheet()的实例;它隐藏在系统的工作方式中。我可以回调MySheet()中的静态函数,但这不允许我通过@IBOutlet更改标签或其他控件。

我知道上述内容很可能是一个天真的问题,但我会非常感谢您对解决方案的任何帮助。

1 个答案:

答案 0 :(得分:0)

当然(!),这个问题应该使用委托来解决,当它设置正确时,它可以正常工作。所以我喜欢这个:

.usertopbar {
    display: inline-block;
    background: url(images/counterbar_bg.jpg) repeat-x #111;
    height: 32px;
    bottom: 600px;
    width: 1100px;
    line-height: 30px;
    text-align: left;
    padding-left: 10px;
    box-shadow: 0px 0px 16px #000;
    border-bottom-right-radius: 8px;
    border-bottom-left-radius: 8px;
}