SwiftUI наблюдает за изменениями из подпредставленияIOS

Программируем под IOS
Anonymous
SwiftUI наблюдает за изменениями из подпредставления

Сообщение Anonymous »

У меня есть структура, которая является частью моей модели представления. Структура по существу хранит все свойства, необходимые для подпредставления и обратных вызовов закрытия.

Код: Выделить всё

struct ColorCorrectionsViewModel {

var sliderVal:Float
var sliderMinVal:Float
var sliderMaxVal:Float
var chosenControl:ColorControl

var userUpdatingColorValue:Bool

var onReset:() -> Void
var onValueChange:(_ newValue:Float) -> Void
var onColorMenuChange(_ newControl:ColorControl) -> Void
}

public enum ColorControl {
case none, brightness, contrast, highlights, shadows
}
И я настраиваю структуру в суперпредставлении перед добавлением подпредставления следующим образом:

Код: Выделить всё

  var editButton:some View {
Button {
editorVM.colorControlsVM.chosenControl = .contrast
editorVM.colorControlsVM.sliderVal = 0.8
editorVM.colorControlsVM.onReset = {
NSLog("Reset")
}
editorVM.colorControlsVM.onValueChange = { newValue in
NSLog("New value \(newValue)")
}
showColorCorrectionMenu.toggle()

} label: {
....
}
Это работает, но не кажется более императивным кодом (чем способ SwiftUI), где я перехватываю изменения значений в ползунке и сегментированном элементе управления и передаю значения в суперпредставление. Я ориентируюсь на iOS 17 или более позднюю версию, если это поможет, поскольку я использую макрос @Observable.
Каков альтернативный способ избежать такого большого количества обратных вызовов закрытия, когда изменения в значениях автоматически наблюдаются родителем ( что кажется чистым способом SwiftUI)?

Подробнее здесь: https://stackoverflow.com/questions/786 ... om-subview

Вернуться в «IOS»