I want to make a picker can choose the room where item put. But the picker is not work.
import SwiftUI
struct NewItem: View{
@Environment(\.dismiss)var dismiss
@ObservedObject var itemStore = ItemStore()
@ObservedObject var roomStore = RoomStore()
@State var Title = ""
@State var Name = ""
@State private var selectedRoom: Room? = RoomStore().rooms.first
@State var Notes = ""
var body: some View{
NavigationView {
List {
Section{
TextField("Title", text: $Title)
TextField("Details", text: $Notes)
}header: {
Text("Detail")
}
Section{
Picker(selection: $selectedRoom, label: Text("Room")) {
ForEach(roomStore.rooms) { room in
Text(room.name).tag(room)
}.onReceive([selectedRoom].publisher.first()) { (room) in
self.selectedRoom = room
}.pickerStyle(MenuPickerStyle())
}
}
}.listStyle(.insetGrouped)
.navigationBarTitle("New Item")
.navigationBarTitleDisplayMode(.inline)
.interactiveDismissDisabled()
.toolbar{
ToolbarItem(placement: .navigationBarTrailing){
Button("Save") {
let newItem = Item(title: self.Title, note: self.Notes, isComplete: false, room: self.selectedRoom?.name ?? "")
self.itemStore.items.append(newItem)
self.dismiss()
}.disabled(Title == "")
}
ToolbarItem(placement: .navigationBarLeading){
Button("Cancel"){
dismiss()
}
}
}
}
}
}