У меня есть class DataPoint
, которое является значением словаря.
DataPoint
имеет переменную-член value
, которую мне нужно связать с Slider
в SwiftUI.
Я предоставляю данные class AppData
как @Environment Object
для SwiftUI, словарь содержит экземпляры class DataPoint
.
Мне не удается связать переменную-член DataPoint.value
с SwiftUI Slider
значение.
Это соответствующие фрагменты кода.
Данные @Published:
class AppData: ObservableObject {
@Published var dataPoints: [UUID : DataPoint] = [:] {
...
}
Структура данных:
class DataPoint: Identifiable {
var id = UUID()
var value: Double
}
Представление SwiftUI для DataPoints AppDataList
:
struct AppDataList: View {
@EnvironmentObject var appData: AppData
var body: some View {
NavigationView {
List(Array(appData.dataPoints.values)) { dataPoint in
NavigationLink(destination: DataPointDetail(dataPointID: dataPoint.id)) {
Text("\(dataPoint.value)")
}
}
...
}
Представление SwiftUI DataPointDetail
, с которым я борюсь, на него ссылаются из AppDataList
:
struct DataPointDetail: View {
@EnvironmentObject var appData: AppData
var dataPointID: UUID
var body: some View {
HStack(alignment: .top) {
VStack(alignment: .leading) {
Text("Data Point Detail")
Text("\(appData.dataPoints[dataPointID]!.value)")
/* This line */
/* troubles */
/* me! */
/* ---> */ Slider(value: appData.dataPoints[dataPointID]?.value, in: 0...10000)
Spacer()
Text("\(appData.dataPoints[dataPointID]!.id)")
}
}
}
}
The root представление контента:
struct ContentView: View {
@EnvironmentObject var appData: AppData
var body: some View {
VStack {
if appData.dataPoints.count > 0 {
AppDataList()
} else {
NoDataPoints()
}
}
}
}
Создание представления контента root в SceneDelegate:
let contentView = ContentView()
.environmentObject(appData)
В редакторе появляется ошибка: Static member 'leading' cannot be used on instance of type 'HorizontalAlignment'
, и она находится в строка VStack в представлении DataPointDetail. Я считаю, что это не имеет никакого отношения к VStack.
Комментирование строки Slider
приводит к компилируемому и запускаемому коду.
Как бы один совершил sh это?