Ios 从另一个viewController访问属性';斯威夫特有什么课?

Ios 从另一个viewController访问属性';斯威夫特有什么课?,ios,swift,uiviewcontroller,instance-variables,Ios,Swift,Uiviewcontroller,Instance Variables,使用拆分视图控制器…我有一个变量,该变量在我的settingsViewController类中获取一个值,现在在我的主视图控制器中,我需要访问该变量的值。如何进入settingsViewController.selectedCounty class settingsViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate { let titleData = TitleData() var s

使用拆分视图控制器…我有一个变量,该变量在我的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的成员

class settingsViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {

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

let settings = settingsViewController()
创建类型为
settingsViewController
的名称
settings
的常量。然后排队

let selectedCounty = settingsViewController.selectedCounty
此常量不可访问。而是访问类型
settingsViewController
的类型属性
selectedcountry
。由于没有此类类型属性,因此这是一个错误

按如下方式访问该属性:

let selectedCounty = settings.selectedCounty

或者将其设置为类型属性:

我最终弄明白了,我需要在设置ViewController时调用Prepareforsgue,以便能够将其传递给我的其他ViewController(注意,我将其更改为FirstViewController以避免混淆:

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

在Swift中,(存储的)属性的初始值不能依赖于其他属性。 此处,您的
ViewController
属性(即
selectedcountry
)取决于
设置视图控制器的属性(即
selectedcountry

解决方案: 您可以稍后在
init()中分配它


想想看:
let settings=settingsViewController()
创建settingsViewController类的新实例,该类与现有settingsViewController实例完全无关。settingsViewController和主视图控制器如何与分割视图控制器相适应?MartinR我理解你的意思,对我来说也很奇怪,但如果我创建一个新的Swift,为什么会这样包含变量X的文件“MyNewClass”,然后通过MyNewClass=MyNewClass()创建MyNewClass的实例,我可以调用myNewClass.x?换句话说,我可以调用一个自定义类,但我不能调用我的settingsViewController类,因为它来自ViewController?@rdelmar我添加了一个屏幕快照屏幕快照没有多大帮助,我仍然不能真正告诉你在做什么。看起来像是放置ViewController的导航控制器是o拆分视图控制器的子级中有一个,但哪个?是详细视图还是主视图?我看不到拆分视图控制器的另一个关系段。应该有两个关系段,一个是主视图,一个是详细视图。拆分视图的设置段看起来像一个“显示”段。为什么?还有另一个“显示”从ViewController到settings,因此如果我正确阅读,这是一个奇怪的设置。很抱歉,我键入的代码错误,我使用了您建议的方式:settings.selectedCounty,但得到相同的错误