Ios SwiftUI:onDismiss没有被呼叫

Ios SwiftUI:onDismiss没有被呼叫,ios,swift,swiftui,xcode11,swift5,Ios,Swift,Swiftui,Xcode11,Swift5,我的问题是,如果我以编程方式关闭视图,则不会调用.sheet中的onDismiss。如果我通常通过向下滑动视图来关闭视图,则会正常调用get 视图1: HStack{ 文本(“Twittere deine Antwort”) 垫片() } .ontapsigne{ self.showPostCommentView=true } .表(显示:self.$showPostCommentView,onDismiss:{ self.optionManager.getTweet()/将@escaping闭

我的问题是,如果我以编程方式关闭视图,则不会调用
.sheet
中的
onDismiss
。如果我通常通过向下滑动视图来关闭视图,则会正常调用get

视图1:

HStack{
文本(“Twittere deine Antwort”)
垫片()
}
.ontapsigne{
self.showPostCommentView=true
}
.表(显示:self.$showPostCommentView,onDismiss:{

self.optionManager.getTweet()/将
@escaping
闭包添加到
PostTweetView
中,并将
onDismiss
代码添加到闭包中。确保
PostTweetView
中的init也分配了所有局部变量:

postweetView

@Environment(\.presentationMode)私有变量presentationMode
var onDismiss:()->Void
init(/*此视图中的所有其他局部变量*/onDismiss:@escaping()->Void){
//初始化所有其他局部变量
self.onDismiss=onDismiss
}
按钮(操作:{
//某些异步操作…在调用完成后
self.tweetManager.sendTweet(完成:{
self.presentationMode.wrappedValue.discouse()文件
self.onDismiss()
})
}) {
文本(“推特”)
}
view1
来自原始问题:

HStack{
文本(“Twittere deine Antwort”)
垫片()
}
.ontapsigne{
self.showPostCommentView=true
}
.表(显示:self.$showPostCommentView,onDismiss:{

self.optionManager.getTweet()//这似乎是预期的行为?如果您自己关闭该工作表,您不需要回调来告诉您您关闭了该工作表。我想在以编程方式关闭列表时运行用新数据刷新列表的代码。然后我能做什么?只需在您的Twittern按钮中运行代码。我还认为这是预期的行为-您可能会nt在以编程方式关闭(例如保存更改)和用户手动关闭(例如撤消)时执行不同的操作@LuLuGaGa Twittern按钮在一个单独的视图中,而我在另一个视图中刷新。是的,但您确实刷新了一个在两个视图后面驱动数据的ObservedObject?