gpt4 book ai didi

xcode - 无法执行简单的导航以查看和返回 SwiftUI 导航栏按钮

转载 作者:行者123 更新时间:2023-12-04 19:25:27 25 4
gpt4 key购买 nike

我正在尝试从一个 View 到另一个 View 进行简单的 SwiftUI 导航,然后使用
条形按钮项。我尝试了三种不同的方法来调用新 View 。
在 body View 中使用 Button 有效,但在导航中使用 NavigationBarItems
bar 以两种不同的方式失败。

这是开始 View :

struct ContentView: View {
@State private var showSecondView = false
var body: some View {
NavigationView {
VStack {
Text("This is the content view")
.navigationBarTitle("Nav Title")
//this works ONCE only:
.navigationBarItems(trailing: Button(action: {self.showSecondView.toggle()}) {
Text("SecondView")
})
//this always fails on return to contentview with error:
//Tried to pop to a view controller that doesn't exist
// .navigationBarItems(trailing:
// NavigationLink(destination: SecondView()) {
// Text("SecondNav")
// }
// )
//This always works:
Button(action: {self.showSecondView.toggle()} ) {
Text("Call Modal Second View")
}.padding()
Text(self.showSecondView ? "true" : "false")
}.sheet(isPresented: $showSecondView) {
SecondView()
}
}
}
}

如果我在 NavigationBarItems 中使用 NavigationLink,则显示 SecondView,但
返回 ContentView 时,它崩溃并显示错误:“试图弹出 View
不存在的 Controller ”

如果我在 NavigationBarItems 中使用 Button,则过渡到 SecondView 有效
一次而且只有一次。返回 ContentView 有效,但按钮不再起作用。
有趣的是,如果采取的第一个 Action 是使用 Body 中的 Button,则
NavigationBarItem 甚至一次都不起作用。

和简单的 SecondView:
struct SecondView: View {
@Environment(\.presentationMode) var presentation
var body: some View {
NavigationView {
VStack{
Text("This is the second view")
Button(action: { self.presentation.wrappedValue.dismiss()}) {
Text("Dismiss Modal")
}.padding()
}
}
}
}

我糊涂了。任何指导将不胜感激。 Xcode 11.2 (11B44), Catalina 10.15

最佳答案

这对我来说仍然是一个问题,我在弹出(模态)演示和通过 NavigationLink 推送第二个 Controller 时遇到了同样的问题。在 navigationBarItems .

这是一个非常严重的错误。它正确工作的唯一方法是当 NavigationLink在里面 NavigationView内容而不是 navigationBarItems .

这是一个真正的突破NavigationBar按钮应该以这种方式工作。

关于xcode - 无法执行简单的导航以查看和返回 SwiftUI 导航栏按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58425183/

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