Кто-нибудь знает, почему Picker из моего файла представления не принимает версию привязки свойства наблюдаемого объекта IOS

Программируем под IOS
Ответить
Anonymous
 Кто-нибудь знает, почему Picker из моего файла представления не принимает версию привязки свойства наблюдаемого объекта

Сообщение Anonymous »

Я не совсем уверен, почему использование тега @ObServable не работает так же, как использование «старого», который использует @publised и stectableObject и @stateObject. Мне просто любопытно, почему это не сработает, так как использование @observable должно быть новым способом. < /P>
Также я новичок в Swiftui. Попытка получить сборщика с экрана View для обновления переменной Currentselection из FutureSviewModel на любых пользовательских взаимодействиях с Picker.
import Foundation

@Observable
class SettingsViewModel {

var currentSelection : ColorOptionEnum
var dataHandler : DataHandler

init() {
let localdataHandler: DataHandler = .init()
currentSelection = localdataHandler.currentBibleVersion
dataHandler = localdataHandler
}
}

-------------

import SwiftUI

struct SettingsView: View {
var settingsViewModel : SettingsViewModel = .init()

var body: some View {

Form {
Text("Mode")
Picker(
"Mode",
selection: $settingsViewModel.currentSelection // GETTING Error here ( cannot find '$settingsViewModel' in scope)
) {
Text(
"Green"
)
.tag(
ColorOptionEnum.Green
)
Text(
"Blue"
)
.tag(
ColorOptionEnum.Blue )

}

}
}
}

#Preview {
SettingsView()
}
< /code>
Эта версия работает < /p>
import Foundation

class SettingsViewModel: ObservableObject {

@Published var currentSelection : ColorOptionEnum
var dataHandler : DataHandler

init() {
let localdataHandler: DataHandler = .init()
currentSelection = localdataHandler.currentBibleVersion
dataHandler = localdataHandler
}
}

-------------

import SwiftUI

struct SettingsView: View {
@StateObject var settingsViewModel : SettingsViewModel = .init()

var body: some View {

Form {
Text("Mode")
Picker(
"Mode",
selection: $settingsViewModel.currentSelection // No error
) {
Text(
"Green"
)
.tag(
ColorOptionEnum.Green
)
Text(
"Blue"
)
.tag(
ColorOptionEnum.Blue
)

}

}
}
}

#Preview {
SettingsView()
}


Подробнее здесь: https://stackoverflow.com/questions/793 ... -version-o
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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