如何在swift中设置子类属性

时间:2015-08-30 09:51:03

标签: ios swift view xcode6 uicontainerview

在左侧的视图控制器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:标题可能完全错误,如果你有任何想法,只需编辑。

enter image description here

1 个答案:

答案 0 :(得分:1)

将触发segue以显示容器视图的视图控制器是其父视图控制器。在你的情况下,那是左边的控制器 - ModuleDetailsVC

为了将数据传递到容器视图的控制器ChartVC,您只需覆盖呈现控制器中的prepareForSegueModuleDetailsVC)。

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
    }
}