如何在另一个视图控制器中控制实例

问题描述:

我是Swift和OS X编程的新手。如何在另一个视图控制器中控制实例

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

一个例子:

我们有一个绘图应用程序,一个观点是帆布,另一种是工具。工具视图中有一个“清除”按钮,点击此按钮时如何清除画布?

您可以使用代表和协议! 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 
    } 
} 

您可以尝试在你的代码中使用Singleton模式。当您创建视图控制器时,请将var从类中移出:

var fooViewController = FooViewController(...) 

class FooViewController{ 
... 
} 

然后,您可以在项目的任何位置使用fooViewController。

如果你与故事板的工作,你可以尝试一些像这样的代码:

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

希望这能有所帮助。