繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM