【问题标题】:Subclassing NSWindowController or NSViewController in OS X在 OS X 中继承 NSWindowController 或 NSViewController
【发布时间】:2016-08-07 00:35:28
【问题描述】:

我想我真的不知道如何通过故事板中的视图控制器和窗口控制器分别管理视图和窗口。

这是我的问题: 我有一个带有主视图的窗口,由myMainViewController 管理。 我要做的就是在 mainView 中创建一个按钮来显示另一个窗口(包含另一个视图)并将数据从myMainViewController 发送到另一个视图。 使用情节提要,我拖动了一个窗口控制器(及其关联的视图)并将按钮连接到窗口(和performsegue)。 但是我应该如何从 myMainViewController 访问 anotherView 的控件?

  • 我应该创建anotherWindowController 类还是anotherViewController 类?
  • 还有第二种情况,如何通过myMainViewController访问?
  • 我是否应该同时创建它们,即使我对另一个窗口(只有它的视图)没有任何需要管理的东西?

基本上,主视图上的按钮应该将图像和字符串发送到另一个视图,嵌入在另一个窗口中。我确信这很明显,但我对 Apple 文档有点困惑,不是很清楚......

谢谢

乔什

【问题讨论】:

    标签: swift macos viewcontroller nswindowcontroller


    【解决方案1】:

    看起来你需要: 1)创建新的自定义视图控制器(新类是nsviewcontroller的子类) 2)在其中创建两个属性(一个用于图像,另一个用于字符串)

        var myImage: NSImage!
        var myText: NSString!
    

    3) 按下按钮后,在目标中,您需要创建新类的新对象作为变量,并通过它访问创建的属性

       var secondController = SecondViewController()
       secondController.myImage = //set your image
       SecondController.myText = //set your string
    

    4) 现在展示您的第二个视图控制器(使用 presentViewController),现在您可以在打开的视图控制器的 viewDidLoad 方法中使用所需的属性

    【讨论】:

    • 坦克,但显然,使用 presentViewController 与使用 segue 相矛盾。事实上,我终于解决了这个问题。我只需要在初始视图控制器中实现prepareforsegue,并测试if let vc = segue.destinationController.contentViewController as? AnotherViewController
    • 是的,如果您使用可视化编辑器,并且如果您的按钮必须打开控制器而不进行任何其他操作,则此选项是一个不错的决定,我的方法更统一..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-04
    • 1970-01-01
    • 2013-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多