我点击一个分段控制器,然后一次更改6个标签,使用不同的值(公制为英制)。
我有那个工作,但是当我换到另一个页面并返回时,选择器重置到位置0.有没有办法保存我离开控制器并回来时选择的位置。我说控制器,但它只有一个控制器,有许多nib文件,像一本书一样运行,所以当我翻页并返回时,它回到原来的位置。
我试过这个代码,可能会看到确实出现但没有运气。
if measurementSwitch == 0 {
metricImperialSwitch?.selectedSegmentIndex = 0
print(measurementSwitch)
}else {
metricImperialSwitch?.selectedSegmentIndex = 1
print(measurementSwitch)
}
这是功能。
func P18Switch() {
if metricImperialSwitch.selectedSegmentIndex == 0
{
measurementSwitch = 0
CWLabel.text = "kg"; TWLabel.text = "kg"; CWaLabel.text = "cm"; TWaLabel.text = "cm"; CHLabel.text = "cm"; THLabel.text = "cm"
}
else if metricImperialSwitch.selectedSegmentIndex == 1
{
measurementSwitch = 1
CWLabel.text = "st"; TWLabel.text = "st"; CWaLabel.text = "inch"; TWaLabel.text = "inch"; CHLabel.text = "inch"; THLabel.text = "inch"
}
}
然后调用视图中的函数加载。
答案 0 :(得分:0)
您可以使用UserDefaults
保存选定的细分索引:
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
UserDefaults.standard.set(metricImperialSwitch?.selectedSegmentIndex, "selectedIndex")
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
if UserDefaults.standard.value(forKey: "selectedIndex") != nil{
measurementSwitch = UserDefaults.standard.value(forKey: "selectedIndex") as! Int
}else{
measurementSwitch = 0
}
if measurementSwitch == 0 {
metricImperialSwitch?.selectedSegmentIndex = 0
}
else {
metricImperialSwitch?.selectedSegmentIndex = 1
}
self.P18Switch()
}
UserDefaults
的替代方案是使用 Global Variables 。这两种方法都运行得很好,但最好使用UserDefaults
,因为即使应用程序完全关闭,值也会保存。