【问题标题】:How to control instance in another view controller如何在另一个视图控制器中控制实例
【发布时间】:2014-09-24 04:02:58
【问题描述】:

我是 Swift 和 OS X 编程的新手。

我正在创建一个带有两个视图控制器的桌面应用程序,它们位于一个拆分视图控制器中。如何访问另一个控制器中的实例并更改其属性?

一个例子:

我们有一个绘图应用程序,一个视图是画布,另一个是工具。工具视图中有一个“清除”按钮,单击该按钮时如何设置画布清除?

【问题讨论】:

    标签: macos swift xcode6


    【解决方案1】:

    您可以尝试在代码中使用单例模式。创建视图控制器时,将 var 从类中取出,如下所示:

    var fooViewController = FooViewController(...)
    
    class FooViewController{
    ...
    }
    

    然后你就可以在项目的任何地方使用 fooViewController。

    如果您正在使用情节提要,您可以尝试以下代码:

    var story = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle())
    var view:MainTabViewController = story.instantiateViewControllerWithIdentifier("MainTab") as MainTabViewController
    

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      您可以使用委托和协议! Link to Official Apple Documentation

      这是一个简单的例子:

      protocol toolsProtocol {
          func pressedClear()
      }
      var delegate : toolsProtocol
      

      在你的画布类中

      class Canvas: UIViewController, toolsProtocol {
          Tools.delegate = self
          func pressedClear() {
             // Insert stuff happens here
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多