在ContentView.swift中,我具有:
List(recipeData) { recipe in NavigationLink(destination: RecipeView(recipe: recipe)){
Text(recipe.name)
}
}
在RecipeView中,用户可能会更新recipeData变量。但是,关闭RecipeView时,不会基于更新的recipeData更新ContentView。
recipeData不是@State数组,而是在ContentView结构外部声明的普通数组。我不能轻易将其设置为@State变量,因为它已在应用程序的其他部分使用。
谢谢!
最佳答案
使用@ObservableObject
和@Published
可以满足您的要求。
视图模型
final class RecipeListViewModel: ObservableObject {
@Published var recipeData: [Recipe] = []
....
....
//write code to fetch recipes from the server or local storage and fill the recipeData
....
....
}
视图
struct RepositoryListView : View {
@ObservedObject var viewModel: RecipeListViewModel
var body: some View {
NavigationView {
List(viewModel.recipeData) { recipe in
NavigationLink(destination: RecipeView(recipe: recipe)) {
Text(recipe.name)
}
}
}
}
关于swift - SwiftUI NavigationView:每次从辅助 View 返回时如何更新先前的 View ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59540040/