我想使用下面的代码访问开关值。我没有价值。从第二个View控制器,我得到设置值,根据值显示内容 - 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"
}
在下面的View Controller中,有设置开关
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。
答案 0 :(得分:0)
首先它没有,因为你没有从故事板或xib加载VC
第二行
let languageSettingsRef = SetConvViewController()
不是现有的,所以使用委托或任何其他观察技术来获取所呈现的VC的当前值
//
class SettingsViewController: UIViewController {
var setVc:SetConvViewController?
}
当您使用segue / push显示SettingsViewController
时,请设置
settInstance.setVc = self
然后向var询问开关值
if self.setVc.swithEnglish.isOn{
englishRef = "yes"
}
将var作为Bool是另一个更好的选择