Swiftui @EnvironmentObject没有';通过导航链接无法正常工作

Swiftui @EnvironmentObject没有';通过导航链接无法正常工作,swiftui,swiftui-navigationlink,Swiftui,Swiftui Navigationlink,我使用我的@EnvironmentObject让我的团队数据可以被不同的人使用,但它不能很好地工作。当我通过列表中的navigationLink转到另一个视图时,一切正常。当我点击同一视图的按钮时,它崩溃了。 我想我弄错了什么。有人能帮忙解决这个问题吗?这是否意味着我需要首先在NavigationView中添加@EnvironmentObject,以便使用它?谢谢 演示: 错误消息: 致命错误:未找到TeamResult类型的ObservableObject。 TeamResult的View.e

我使用我的
@EnvironmentObject
让我的团队数据可以被不同的人使用,但它不能很好地工作。当我通过列表中的navigationLink转到另一个视图时,一切正常。当我点击同一视图的按钮时,它崩溃了。
我想我弄错了什么。有人能帮忙解决这个问题吗?这是否意味着我需要首先在NavigationView中添加
@EnvironmentObject
,以便使用它?谢谢

演示:

错误消息:

致命错误:未找到TeamResult类型的ObservableObject。
TeamResult的View.environmentObject(:)可能作为此视图的祖先丢失。示例:file/BuildRoot/Library/Caches/com.apple.xbs/Sources/Monoceros_Sim/Monoceros-39.4.3/Core/environmentObject.swift,第55行
2020-01-20 01:14:58.466655+0800 Fitness(SwiftUI)[49035:4851345]致命错误:未找到TeamResult类型的可观察对象。
TeamResult的View.environmentObject(:)可能作为此视图的祖先丢失。示例:file/BuildRoot/Library/Caches/com.apple.xbs/Sources/Monoceros_Sim/Monoceros-39.4.3/Core/environmentObject.swift,第55行

尝试在NavigationLink的视图中添加environmentObject

 NavigationLink(destination: GameDetailRecordView().environmentObject(teamResult))

嗨,我用这个方法,这个可以工作。但是我想知道为什么列表中的NavigationLink不需要添加.environmentObject(teamResult),而另一个需要添加.environmentObject(teamResult)。这是否意味着NavigationLink将创建一个新环境?我认为GameRecordListView()下面的所有视图。environmentObject(teamResult)完全可以使用@environmentObject teamResult。您好@frank61003,您是否已经找到了发生这种情况的原因?我也遇到了同样的情况。在运行时动态“创建”导航链接时,似乎所有
EnvironmentObject
都不会被传递。在这些情况下,您必须再次提供environmentObjects。
import SwiftUI
import SwiftyJSON

struct TeamDetail: View {
@EnvironmentObject var teamResult : TeamResult
//    @ObservedObject var teamResult: TeamResult
var roles = ["GameRecord", "Schedule", "Money", "Member"]
@State var show = false
@State private var selectedIndex = 0
var body: some View {
    ZStack{
        VStack {
            Picker(selection: $selectedIndex, label: Text("")) {
                ForEach(0..<roles.count) { (index) in
                    Text(self.roles[index])
                }
            }
            .pickerStyle(SegmentedPickerStyle())

            HStack{
                containedView()

            }
            Spacer()

            }


        }.navigationBarTitle(teamResult.groupName)
        .onAppear(perform:{

        })
}



//select different view by selectedIndex
func containedView() -> AnyView {
   switch selectedIndex {
   case 0:
       return AnyView(
            GameRecordListView().environmentObject(teamResult)   <-create environmentObject here
       )

   case 1:

      return AnyView(Text("")
           .padding(30))


   case 2:
      return AnyView(
        BookkeepingView().environmentObject(teamResult)

    )


   default:
    return AnyView(
        TeamMemberListView().environmentObject(teamResult))
}

}
}
import SwiftUI

struct GameDetailRecordView: View {
  @EnvironmentObject var teamResult : TeamResult
  var body: some View {
     Text("ID:\(teamResult.groupID)Name:\(teamResult.groupName)")
  }
}
 NavigationLink(destination: GameDetailRecordView().environmentObject(teamResult))