gpt4 book ai didi

swift - 尝试保存段 Controller 的位置

转载 作者:行者123 更新时间:2023-11-30 12:42:29 24 4
gpt4 key购买 nike

我有一个分段 Controller ,单击它,它会立即更改 6 个标签,并使用不同的值(公制到英制)。

我已经可以工作了,但是当我切换到不同的页面并返回时,选择器重置为位置 0。有没有办法在我离开 Controller 并返回时保存所选的位置。我说 Controller ,但它只是一个带有许多 nib 文件的 Controller ,它们像一本书一样运行,所以当我翻页并返回时,它又回到原来的位置。

我在可能的 View 中尝试了这段代码,但没有出现。

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"

}
}

然后调用 View 中的函数确实加载了。

最佳答案

您可以使用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,因为即使应用完全关闭,这些值也会保存。

关于swift - 尝试保存段 Controller 的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42073779/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com