Reputation: 1182
I have HomeView here i am showing favMenu data from favViewModel.fetchFavList
. now in HomeView addmore click on i got to FavouriteView here in save button service call i updated the favViewModel.fetchFavList but the same updated favViewModel.fetchFavList is not reflecting in HomeView after dismiss the FavouriteView.. why?? the old list only showing??
HomeView code:
struct HomeView: View {
@StateObject private var favViewModel = FavMenuViewModel()
@State private var favMenu: [AllMenu] = []
var body: some View {
ZStack {
VStack{
favView()
}
}
.onAppear {
favViewModel.fetchFavList { status in
if status{
favMenu = favViewModel.favMenuList.filter { $0.isSelected == true }
}
}
}
.navigationDestination(isPresented: $gotoAddMore) {
FavouriteView(showSideMenu: $showSideMenu)
.toolbar(.hidden, for: .navigationBar)
}
@ViewBuilder func favView() -> some View {
VStack {
List {
ForEach(0..<favMenu.count + 1, id: \.self) { ind in
if ind == favMenu.count {
Button {
gotoAddMore = true
} label: {
VStack(spacing: 6) {
Image(systemName: "plus.circle.fill")
}
}
.buttonStyle(.plain)
} else {
Button {
} label: {
favCell(item: favMenu[ind], index: ind)
}
.buttonStyle(.plain)
}
}
}
}
}
codeFavouriteView: here in updateFavoriteMenus service call success updated favViewModel.fetchFavList
and its updated list also showing but in Save button click it got dismiss() then why my updated favViewModel.fetchFavList
not showing in HomeView??? please guide after dismiss() of FavouriteView i need updated fetchFavList in HomeView
struct FavouriteView: View {
@Environment(\.dismiss) var dismiss
@StateObject private var favViewModel = FavMenuViewModel()
@State private var selectedItem: Int = 0
@State var selectedfavMenu: AllMenu? = nil
var body: some View {
ZStack {
VStack {
VStack {
HStack {
Button(action: {
updateFavoriteMenus()
dismiss()
}, label: {
Text("Save")
})
}
List {
ForEach(0..<favViewModel.favMenuList.count, id: \.self) { ind in
favCell(item: favViewModel.favMenuList[ind], index: ind)
}
}
}
}
.onAppear {
favViewModel.fetchFavList { status in
selectedItem = favViewModel.favMenuList.filter({ $0.isSelected}).count
}
}
}
func updateFavoriteMenus() {
//some code
do {
if let jsonResponse = try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any] {
print("Response JSON: \(jsonResponse)")
favViewModel.fetchFavList { status in
print("updated fav menus.... \(favViewModel.favMenuList)")
}
}
}
}
@ViewBuilder func favCell(item: AllMenu, index: Int) -> some View {
HStack(spacing: 0) {
Text(item.title ?? "")
.font(.calibriRegular(with: 20))
.foregroundStyle(Color.black)
Toggle("", isOn: $favViewModel.favMenuList[index].isSelected)
.labelsHidden()
.onChange(of: favViewModel.favMenuList[index].isSelected) { isSelected in
handleToggleChange(for: item, isSelected: isSelected)
}
}
}
func handleToggleChange(for item: AllMenu, isSelected: Bool) {
selectedfavMenu = item
selectedfavMenu?.isSelected = isSelected
selectedItem = favViewModel.favMenuList.filter { $0.isSelected }.count
}
}
Upvotes: 0
Views: 60