I am trying to modify the underlying CoreData for a TabView in SwiftUI and have that reflected when a user creates or deletes data, but the view never gets "redrawn" Here is what I have so far:
struct AddUserView: View {
@State var showingAddNewUser = false
@Environment(.managedObjectContext) var managedObjectContext
@FetchRequest(
entity: Users.entity(),
sortDescriptors: [
NSSortDescriptor(keyPath: User.fName, ascending: true)
]
) var fetchedUsers: FetchedResults<Users>
var body: some View {
TabView{
if(fetchedUsers.count > 0){
ForEach(fetchedUsers) { user in
UserProfileView(showingAddNewUser: showingAddNewUser, user: user, managedObjectContext: _managedObjectContext)
}
AddUserView(showingAddNewuser: false)
} else{
AddUserView(showingAddNewuser: false)
}
}.frame(width: UIScreen.main.bounds.width, height: 400)
.tabViewStyle(PageTabViewStyle(indexDisplayMode: .never))
}
For the UserProfileView I have:
struct UserProfileView: View {
@State var showingAddNewUser = false
@ObservedObject var user: Users
@Environment(.managedObjectContext) var managedObjectContext
var body: some View {
the body of my user profile view.. Essentially some Text views to display user info along with a delete button
after editing the context is saved here
private func saveContext() {
do {
try managedObjectContext.save()
} catch {
print("Error saving managed object context: (error)")
}
}
When I use the delete button the user is deleted but the TabView in the AddUserView is not redrawn/updated. How do I recall the "fetch" request to update the data set?
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…