从 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!
}
使用拆分视图控制器...我有一个变量,它在我的 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!
}