gpt4 book ai didi

swift - SwiftUI-出现工作表后,无法单击导航栏按钮

转载 作者:行者123 更新时间:2023-12-04 20:06:18 35 4
gpt4 key购买 nike

几周前我才刚刚开始使用SwiftUI,我正在学习。今天,我遇到了一个问题。

当我显示带有NavigationBarItems按钮的工作表,然后关闭ModalView并返回到ContentView时,我发现自己无法再次单击navigationBarItems按钮。

我的代码如下:

struct ContentView: View {

@State var showSheet = false

var body: some View {
NavigationView {
VStack {
Text("Test")
}.sheet(isPresented: self.$showSheet) {
ModalView()
}.navigationBarItems(trailing:
Button(action: {
self.showSheet = true
}) {
Text("SecondView")
}
)
}
}
}

struct ModalView: View {

@Environment(\.presentationMode) var presentation

var body: some View {
VStack {
Button(action: {
self.presentation.wrappedValue.dismiss()
}) {
Text("Dismiss")
}
}
}
}

最佳答案

我认为发生这种情况是因为presentationMode没有从演示者 View 继承,所以演示者不知道该模式已经关闭。您可以通过在演示者中添加presentationMode(在本例中为ContentView)来解决此问题。

struct ContentView: View {

@Environment(\.presentationMode) var presentation
@State var showSheet = false

var body: some View {
NavigationView {
VStack {
Text("Test")
}.sheet(isPresented: self.$showSheet) {
ModalView()
}.navigationBarItems(trailing:
Button(action: {
self.showSheet = true
}) {
Text("SecondView")
}
)
}
}
}
在Xcode 11.5上测试。
这是全部工作
example

关于swift - SwiftUI-出现工作表后,无法单击导航栏按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58512344/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com