Hi everybody and thanks in advance for your help
I have a problem with a picker selection the main idea is We mave a main view, which presents a list of List Pressing on item in list gives you another view of Meters, but at once, there are no meter, you have to add them (and they are different for every list), so there's an optional picker, and the view is connected to that optional picker. As soon as you add a Meter, the view shows a data of this meter.
struct Meters: View {
@EnvironmentObject var dataStore: DataStore
var property: Property
@State private var selectedMeter: Property.Meter?
@State private var addMeter = false
// Intermediate variable to hold the selected meter initially
private var initialSelectedMeter: Property.Meter? {
property.meters.first
}
var body: some View {
NavigationStack {
Group {
if property.meters.isEmpty {
BlankView(text: "meter")
} else {
if selectedMeter == nil {
// If no meter is selected, set the first meter as selected
// if let selectedMeter = initialSelectedMeter {
selectedMeter = initialSelectedMeter
// }
}
if let selectedMeter = selectedMeter {
ReadingsList(property: property, meter: selectedMeter)
}
}
}
.navigationBarTitleDisplayMode(.inline)
.navigationTitle(property.name)
.toolbar {
ToolbarItem {
Button("+ Meter") {
addMeter = true
}
}
ToolbarItem(placement: .status) {
MetersList(property: property, selectedMeter: $selectedMeter)
}
}
.sheet(isPresented: $addMeter) {
AddMeter(property: property)
}
}
}
}
Everything works, the meter adds, but:
- As soon as I add a meter, I'd like it to be selected (but .onAppear doesn't work for that) 2)I select some picker and then add some data. Everytime when I add data to EnvironmentObject, the view refreshes and the picker gets deselected, but I'd like it to stay the same