Я недавно провела рефакторинг прототипа приложения, чтобы сделать код более управляемым, но я столкнулся с небольшим ударом в дороге, и я не уверен, как его обойти.
Ранее я использовал SettingsViewController для просмотра и установки пользовательских настроек. Затем я вызвал метод делегата, который обновил мой интерфейс. Я хочу изменить это так, чтобы SettingsViewController обновлял класс настроек, и этот класс затем изменял пользовательский интерфейс во всем приложении. Ключевой вопрос здесь действительно заключается в том, имеет ли это смысл в качестве подхода? Приведенный ниже код является примером того, что я пытаюсь сделать концептуально, но опять же я не уверен, что любая помощь будет оценена!
class MySettings {
var x: Int = 0
func updateX(newX: Int) {
self.x = newX
delegate?.newXwasSet(newX: Int)
}
}
protocol SettingsDelegate {
func newXwasSet(newX: Int)
}
class SettingsViewController: UIViewController {
mysettings = MySettings()
@IBAction func xWasChanged(_ sender: UISegmentedControl) {
mysettings.updateX(SegmentedControllerName.selectedSegmentIndex)
}
}
class MainViewController: UIViewController, SettingsDelegate {
func newXwasSet(newX: Int) {
myLabel.text = NumberFormatter.localizedString(from: NSNumber(value: newX), number: .decicaml)
}