I have this setup: Parent View: PostsListView Child View: PostEditView
- PostsListView shows a list short description of posts
- On tap of any post, I present child view: PostEditView
- Goal is to chage post here call API and when user comes back to PostsListView, it should show updated description
I'm using MVVM so, in PostsListView
@ObservedObject var viewModel : PostsListViewModel
LazyVGrid(columns: columns) {
ForEach(viewModel.posts, id: \.self) { post in
NavigationLink(
destination: PostEditView(viewModel: PostEditViewModel(post: post))){
Text(post: post)
.lineLimit(3)
}
}
}
I pass view model(PostEditViewModel(post:)) to childView from parent view.
I'm not sure how to bind this 'post' object across both views' viewModels.
FYI viewModels:
PostsListViewModel:
class PostsListViewModel: ObservableObject{
@Published var posts: [Post]
//api operations....
}
PostEditViewModel:
class PostEditViewModel: ObservableObject{
@Published var post: Post
//custom Post mutation and api operations....
}