Swift 工作表内容赢得';t根据参数进行更新

Swift 工作表内容赢得';t根据参数进行更新,swift,swiftui,observedobject,Swift,Swiftui,Observedobject,按下按钮时,我正在呼叫一张工作表。按钮是通过ForEach循环生成的,我想将当前对象传递到新的工作表中。根据此对象,我希望工作表显示不同的变量 ForEach(processor.matchEvents){event in Button(action: {showSheet.toggle()}) { ZStack{ RoundedRectangle(cornerRadius: 15) .fill(event.team.te

按下按钮时,我正在呼叫一张工作表。按钮是通过
ForEach
循环生成的,我想将当前对象传递到新的工作表中。根据此对象,我希望工作表显示不同的变量

ForEach(processor.matchEvents){event in
    Button(action: {showSheet.toggle()}) {
        ZStack{
            RoundedRectangle(cornerRadius: 15)
             .fill(event.team.teamColor)
             .frame(minWidth: 150, maxHeight: .infinity)
             .padding([.vertical], 10)
             .padding([.horizontal], 5)
                                
            VStack(alignment: .center, spacing: 5){
                Group{
                    Text(event.team.teamName)
                    Text(event.time)
                    Text(event.event)
                }
                                
            }
        }
    }
     .sheet(isPresented: $showSheet){
         EditEventView(team: event.team, event: event)
    }
}
为了缩短代码,我去掉了大部分样式。下面是我试图在工作表中运行的代码,但没有得到新的更新事件

struct EditEventView: View {
    @ObservedObject var team: Team
    var event: MatchEvent
    
    @Environment(\.presentationMode) var presentationMode
    
    @State private var playerSelect = 0
    
    @ObservedObject var processor = EventsProcessor.shared
    
    var body: some View{

        NavigationView{
            Form{
                Section(header: Text("Event")){
                    Text(team.teamName)
                    Text(event.event)
                    Text(event.player)
                    Text(event.time)

                }
            }
        }
    }
}
每个事件都存储在下面链接的另一位代码中。这样,他们就可以在整个程序中访问

struct MatchEvent: Identifiable{
    var id = UUID()
    
    var team: Team
    
    var time: String
    var event: String
    var player: String
}

class EventsProcessor: ObservableObject {
    static let shared = EventsProcessor()
    
    @Published var matchEvents = [MatchEvent]()
    
    func addEvent(time: String, event: String, player: String, team: Team){
        matchEvents.append(MatchEvent(team: team, time: time, event: event, player: player))
    }

}

我已经准备好了要显示的工作表,这一点正在发挥作用,但是它会不断显示相同的数据,并且不会在我去参加新活动时更新。任何帮助都将不胜感激。

您已经用
@ObservedObject var team:team

只需将
var-event:MatchEvent
更改为
@ObservedObject-var-event:MatchEvent

@ObservedObject属性包装器来自
Combine
,正在“查找更新并在找到更新后更新视图”。

您需要使用
工作表(项目:
,如中所示)。