从Swift中的另一个viewController类访问属性?

时间:2015-04-10 19:50:45

标签: ios swift uiviewcontroller instance-variables

使用拆分视图控制器...我有一个变量,它在我的settingsViewController类中获取一个值,现在在我的主视图控制器中,我需要访问有价值的变量。我怎样才能访问settingsViewController.selectedCounty?

class settingsViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {

 let titleData = TitleData()
 var selectedCounty = String?("Allegany")

试图抓住这个值放在:

class ViewController: UIViewController {


let settings = settingsViewController()
let selectedCounty = settings.selectedCounty

返回“settingsViewController.type”没有名为selectedCounty的成员?

enter image description here

3 个答案:

答案 0 :(得分:2)

我最终搞清楚了,我需要在settingsViewController上调用prepareForSegue才能将其传递给我的其他ViewController(注意我将其更改为FirstViewController以避免混淆:

   override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    var destViewController: FirstViewController = segue.destinationViewController as! FirstViewController
    destViewController.selectedCounty = selectedCounty
}

答案 1 :(得分:0)

在Swift中,(存储的)属性的初始值不能依赖于其他属性。 您的ViewController属性(即selectedCounty)取决于settingsViewController的属性(即selectedCounty)。

<强>解决方案: 您可以稍后在init()

中进行分配
let selectedCounty:String

init(){

selectedCounty = settings.selectedCounty!

}

答案 2 :(得分:-1)

该行

let settings = settingsViewController()

创建settings类型名称settingsViewController的常量。然后在行

let selectedCounty = settingsViewController.selectedCounty

未访问此常量。而是访问类型selectedCounty的类型属性settingsViewController。由于没有这样的类型属性,这是一个错误。

按如下方式访问该媒体资源:

let selectedCounty = settings.selectedCounty

或使其成为类型属性: