gpt4 book ai didi

swift - 在工作表中使用 NavigationLink 后的两个 UINavigationController

转载 作者:行者123 更新时间:2023-11-30 10:32:33 25 4
gpt4 key购买 nike

我有一个从我的主视图中呈现的模态表,如下所示:

    Button(action: {
...
}) {
...
}
.sheet(isPresented: ...) {
MySheetView()
}

MySheetView中,有一个NavigationView和一个NavigationLink来将另一个 View 推送到其 View 堆栈上(当我在 >MySheetView 屏幕并使用 View 检查器,只有一个 UINavigationController 与其关联,这正是我所期望的。

但是,一旦我使用 NavigationLink 到达从 MySheetView 呈现的下一个 View ,并且使用 View 层次结构调试器,就会出现 两个 UINavigationControllers 彼此重叠。请注意,此 View 内部没有 NavigationView,只有 MySheetView 有。

有人知道这是怎么回事吗?我有一种感觉,这导致了我遇到的一些导航错误。这可以在具有相同结构的示例应用程序中轻松重现。

例如:

// These are 3 separate SwiftUI files
struct ContentView: View {

@State var isPresented = false

var body: some View {
NavigationView {
Button(action: { self.isPresented = true }) {
Text("Press me")
}
.sheet(isPresented: $isPresented) {
ModalView()
}
}
}
}

struct ModalView: View {
var body: some View {
NavigationView {
NavigationLink(destination: FinalView()) {
Text("Go to final")
}
}
}
}

struct FinalView: View {
var body: some View {
Text("Hello, World!")
}
}

最佳答案

我没有观察到您所描述的行为。使用Xcode 11.2。可能您需要提供代码才能找到原因。

navigationview in sheet

以下是在主屏幕和工作表中使用导航 View 的示例。 (注意:删除主屏幕中的导航 View 不会影响工作表中的导航 View )。

import SwiftUI

struct TestNavigationInSheet: View {
@State private var hasSheet = false

var body: some View {
NavigationView {
Button(action: {self.hasSheet = true }) {
Text("Show it")
}
.navigationBarTitle("Main")
.sheet(isPresented: $hasSheet) { self.sheetContent }
}
}

private var sheetContent: some View {
NavigationView {
VStack {
Text("Properties")
.navigationBarTitle("Sheet")
NavigationLink(destination: properties) {
Text("Go to Inspector")
}
}
}
}

private var properties: some View {
VStack {
Text("Inspector")
}
}
}

struct TestNavigationInSheet_Previews: PreviewProvider {
static var previews: some View {
TestNavigationInSheet()
}
}

关于swift - 在工作表中使用 NavigationLink 后的两个 UINavigationController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58830164/

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