在左侧的视图控制器ModuleDetailsVC上,我有一个名为moduleId的类属性。我的问题是我想将此属性传递给ChartVC,以生成相应的图形。 我有一个容器视图,因为我的图表视图需要一个不同的视图控制器。
class ModuleDetailsVC: UIViewController {
@IBOutlet weak var chartSubView: UIView!
private var _module: Module?
[...]
}
class ChartVC: UIViewController {
var moduleId: Int!
func setModuleId(moduleId: Int) {
self.moduleId = moduleId
}
[...]
}
在哪里调用ChartVC.setModuleId()?如果调用这个是正确的解决方案......(我已经尝试过ViewDidLoad / Appear / SubViewLayout ......等等
PS:标题可能完全错误,如果你有任何想法,只需编辑。
答案 0 :(得分:1)
将触发segue以显示容器视图的视图控制器是其父视图控制器。在你的情况下,那是左边的控制器 - ModuleDetailsVC
。
为了将数据传递到容器视图的控制器ChartVC
,您只需覆盖呈现控制器中的prepareForSegue
(ModuleDetailsVC
)。
class ModuleDetailsVC: UIViewController {
private var module: Module
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if let chartVC = segue.destinationViewController as? ChartVC {
chartVC.setModuleId(module.id)
}
}
}
class ChartVC: UIViewController {
var moduleId: Int!
func setModuleId(moduleId: Int) {
self.moduleId = moduleId
}
}