关闭视图后,NavigationBarItem无法单击!
XCode11 beta3, MacOS Catalina 10.15 Beta(19A501i)
当单击DetailView按钮以通过@Binding关闭时, ContentView的navigationBarItem将被禁用(无法单击)! 但是向下滚动以关闭是可以的(可以单击并在“调试预览”模式下将其打印为“已点击!”)
Variable x = { 2 4 8 ......}
Variable y = { 3 5 6 ......}
答案 0 :(得分:0)
我倾向于认为模态存在一个错误。模态消失时,永远不会调用onDismiss
。但是,我确实找到了解决方法。我不是通过从模式视图内部设置isPresented变量来关闭,而是使用主窗口中的rootViewController来调用UIKit dismiss方法。
通过这种方式消除模态,将正确调用onDismiss闭包,并且在此处设置isPresented = false,因此可以再次呈现模态。
以下代码可以正常工作,至少要等到新版本解决该问题为止:
import SwiftUI
struct DetailView: View {
var body: some View {
Group {
Text("Detail")
Button(action: {
UIApplication.shared.windows[0].rootViewController?.dismiss(animated: true, completion: { })
}) {
Text("Dismiss")
}
}
}
}
struct ContentView : View {
@State var isPresented = false
var body: some View {
NavigationView{
Button(action: {self.isPresented.toggle()}){
Text("Show")
}
.presentation(!isPresented ? nil :
Modal(DetailView()) {
self.isPresented = false
print("dismissed")
}
)
.navigationBarTitle(Text("Test"))
.navigationBarItems(trailing:
Button(action: {print("Clicked!")} ) {
Image(systemName: "plus")
.frame(width: 44, height: 44)
.foregroundColor(.black)
.cornerRadius(22)
}
.padding(.trailing)
)
}
}
}