无法从不同的 VC Swift 获取开关的值



我想使用以下代码访问开关值。我得到零价值。从第二个视图控制器中,我获得设置值以根据值显示内容 - englishRef。

SetConViewController 是我的设置视图控制器,我想从中获取我的值。

let languageSettingsRef = SetConvViewController()
var englishRef = ""
// Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value
if languageSettingsRef.swithEnglish.isOn{
englishRef = "yes"
}

在下面的视图控制器中,有用于设置的开关

class SetConvViewController: UIViewController {
var conversationSettingsReference: DatabaseReference!
let userID = Auth.auth().currentUser?.uid
var engS = "engS"
var engGoster = ""
@IBOutlet weak var swithEnglish: UISwitch!
override func viewDidLoad() {
super.viewDidLoad()
if let eng2 = defaults.value(forKey: engS) {
swithEnglish.isOn = eng2 as! Bool
}
}
let defaults = UserDefaults.standard
@IBAction func switchEng(_ sender: UISwitch) {
defaults.set(sender.isOn, forKey: engS)
}
}

当我想从这个类访问值时,我得到零。

首先,它是 nil,因为您不会从情节提要或 xib 加载 VC

第二行

let languageSettingsRef = SetConvViewController()

不是呈现的VC,所以使用委托或任何其他观察技术来获得所呈现VC的当前值

//

class SettingsViewController: UIViewController { 
var setVc:SetConvViewController?
}

当您使用 segue/push 呈现SettingsViewController时,设置

settInstance.setVc = self

然后向 var 询问开关值

if self.setVc.swithEnglish.isOn{
englishRef = "yes"
}

将 var 设为布尔值是另一个更好的选择

相关内容

  • 没有找到相关文章

最新更新