[英]accessing property from another viewController's class in Swift?
使用拆分视图控制器...我有一个在我的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的成员吗?
我最终弄清楚了,我需要在settingsViewController上调用prepareForSegue才能将其传递给其他ViewController(请注意,我将其更改为FirstViewController以避免混淆:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
var destViewController: FirstViewController = segue.destinationViewController as! FirstViewController
destViewController.selectedCounty = selectedCounty
}
在Swift中,(存储的)属性的初始值不能依赖于其他属性。 在这里,您的ViewController
的属性(即selectedCounty
)取决于settingsViewController
的属性(即selectedCounty
)。
解决方案:您可以稍后在init()
分配它
let selectedCounty:String
init(){
selectedCounty = settings.selectedCounty!
}
线
let settings = settingsViewController()
创建一个类型为settingsViewController
的名称settings
的常量。 然后在行中
let selectedCounty = settingsViewController.selectedCounty
此常量不被访问。 而是访问类型为settingsViewController
的类型属性selectedCounty
。 由于没有这样的类型属性,因此是错误的。
如下访问属性:
let selectedCounty = settings.selectedCounty
或将其设为类型属性:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.