Всем привет! Помогите разобраться. У меня есть два экрана. Первый основной экран отображает информацию. Второй экран(настройки) меняет данные на главном экране.
Я хочу изменить единицу измерения у высоты и перехожу на экран настроек, и меняю единицу с (ft) на (m). Далее, я возвращаюсь на основной экран и вижу что все поменялось - все четко и классно. Далее, я хочу вернутся на экран настроек и вижу что сегмент у меня не сохранился! И переместился на единицу (ft).
Вопрос: как долбится сохранения положения сегмента при возврате(повторно) на экран настроек?
Код экрана настроек: -
import UIKit
class SettingsViewController: UIViewController {
@IBOutlet var segmentHeight: UISegmentedControl!
@IBOutlet var segmentDiametr: UISegmentedControl!
@IBOutlet var segmentMass: UISegmentedControl!
@IBOutlet var segmentLoad: UISegmentedControl!
var newArray: [ListRockets]!
var delegate: UpDataSettingsDelegate!
private var unitHeight = "ft"
private var unitDiameter = "ft"
private var unitWeight = "kg"
private var unitLoad = "lb"
private var number = 0
override func viewDidLoad() {
super.viewDidLoad()
statesSegmentIndex()
}
private func statesSegmentIndex() {
segmentHeight.selectedSegmentIndex = 1
segmentDiametr.selectedSegmentIndex = 1
segmentLoad.selectedSegmentIndex = 1
}
private func add(_ index: Int, _ sender: UISegmentedControl) {
switch sender.tag {
case 1:
unitHeight = segmentHeight.titleForSegment(at: sender.selectedSegmentIndex) ?? ""
UserDefaults.standard.set(unitHeight, forKey: "unitHeight")
case 2:
unitDiameter = segmentDiametr.titleForSegment(at: sender.selectedSegmentIndex) ?? ""
UserDefaults.standard.set(unitDiameter, forKey: "unitDiameter")
case 3:
unitWeight = segmentMass.titleForSegment(at: sender.selectedSegmentIndex) ?? ""
UserDefaults.standard.set(unitWeight, forKey: "unitWeight")
default:
unitLoad = segmentLoad.titleForSegment(at: sender.selectedSegmentIndex) ?? ""
UserDefaults.standard.set(unitLoad, forKey: "unitLoad")
}
}
@IBAction func segmentAction(_ sender: UISegmentedControl) {
add(number, sender)
}
@IBAction func cancelButton(_ sender: Any) {
delegate.setSettingsUnits(unitHeight, unitDiameter, unitWeight, unitLoad)
dismiss(animated: true, completion: nil)
}
}