在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/

10-10 16:43