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

accessing property from another viewController's class in Swift?

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

class settingsViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {

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

试图获取此值以放入:

class ViewController: UIViewController {


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

returns "settingsViewController.type" 没有名为 selectedCounty 的成员?

let settings = settingsViewController()

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

let selectedCounty = settingsViewController.selectedCounty

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

按如下方式访问属性:

let selectedCounty = settings.selectedCounty

或将其设为类型 属性:

我最终弄明白了,我需要在设置 ViewController 上调用 prepareForSegue 才能将其传递给我的另一个 ViewController(注意我将其更改为 FirstViewController为避免混淆:

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

在Swift中一个(存储)属性的初始值不能依赖于其他属性(s)。 这里你的 ViewController 的 属性(即 selectedCounty)取决于 settingsViewController 的 属性(即 selectedCounty)。

解法: 您可以稍后在 init()

中分配它
let selectedCounty:String

init(){

selectedCounty = settings.selectedCounty!

}