【发布时间】:2014-09-24 04:02:58
【问题描述】:
我是 Swift 和 OS X 编程的新手。
我正在创建一个带有两个视图控制器的桌面应用程序,它们位于一个拆分视图控制器中。如何访问另一个控制器中的实例并更改其属性?
一个例子:
我们有一个绘图应用程序,一个视图是画布,另一个是工具。工具视图中有一个“清除”按钮,单击该按钮时如何设置画布清除?
【问题讨论】:
我是 Swift 和 OS X 编程的新手。
我正在创建一个带有两个视图控制器的桌面应用程序,它们位于一个拆分视图控制器中。如何访问另一个控制器中的实例并更改其属性?
一个例子:
我们有一个绘图应用程序,一个视图是画布,另一个是工具。工具视图中有一个“清除”按钮,单击该按钮时如何设置画布清除?
【问题讨论】:
您可以尝试在代码中使用单例模式。创建视图控制器时,将 var 从类中取出,如下所示:
var fooViewController = FooViewController(...)
class FooViewController{
...
}
然后你就可以在项目的任何地方使用 fooViewController。
如果您正在使用情节提要,您可以尝试以下代码:
var story = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle())
var view:MainTabViewController = story.instantiateViewControllerWithIdentifier("MainTab") as MainTabViewController
希望这会有所帮助。
【讨论】:
您可以使用委托和协议! 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
}
}
【讨论】: