ios - NavigationView 和 NavigationLink 在转换后不删除 View

标签 ios swift swiftui

我正在使用 SwiftUI 编写应用程序,但我在使用 NavigationViewNavigation Link 时遇到了一些问题,如下所示模拟器视频。该项目创建为 Single View App

我有三个页面,正如你所看到的,当它把我从一个页面带到另一个页面时,它在第一个页面下面构建了第二个页面,并且没有分配第一个页面,我在第三页:它创建在第二页下方,我什至可以通过左上角错误的 back 按钮返回到第一页。

视频:

demo of the problem

这是三个页面的代码:

first.swift

import SwiftUI

struct first: View {
    var body: some View {
        NavigationView{
            NavigationLink(destination: second()) {
                Text("first link")
            }
        }
    }
}

struct first_Previews: PreviewProvider {
    static var previews: some View {
        first()
    }
}

second.swift

import SwiftUI

struct second: View {
    var body: some View {
        NavigationView {
            NavigationLink(destination: third()) {
                Text("second link")
            }
        }
    }
}

struct second_Previews: PreviewProvider {
    static var previews: some View {
        second()
    }
}

third.swift

import SwiftUI

struct third: View {
    var body: some View {
        Text("Third page")
    }
}

struct third_Previews: PreviewProvider {
    static var previews: some View {
        third()
    }
}

我使用 Navigation View 的方式与苹果官方教程相同(或者至少我认为我是……)here

谢谢!

编辑:尽管只定义了一个 NavigationView,但我仍然遇到与此代码相同的问题。在我上传到 Xcode 11.2 后问题回来了,但是在 Release Notes 中它没有说明对 NavigationView 所做的任何更改。

first.swift

import SwiftUI

struct first: View {
    var body: some View {
        NavigationView {
            NavigationLink(destination: second()) {
                Text("First link")
            }
        }

    }
}

struct first_Previews: PreviewProvider {
    static var previews: some View {
        first()
    }
}

second.swift

import SwiftUI

struct second: View {
    var body: some View {
        NavigationLink(destination: first()) {
            Text("back to first")
        }
    }
}

struct second_Previews: PreviewProvider {
    static var previews: some View {
        second()
    }
}

视频:

demo of the problem

再次感谢!

最佳答案

您当前的代码正在做的是将second 中的NavigationView 嵌套在first 中的NavigationView 中。

要解决此问题,您只需在 second 中删除 NavigationView:

struct second: View {
    var body: some View {
        NavigationLink(destination: third()) {
            Text("second link")
        }
    }
}

关于ios - NavigationView 和 NavigationLink 在转换后不删除 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58629978/

相关文章:

ios - 使用命令行的 UIAutomation 不起作用

Swift 2.2 - 将初始化程序与类类型的可变参数一起使用

ios - reloadData() 不更新父 TableView

ios - SwiftUI fatal error : No ObservableObject of type "" found and @EnvironmentObject error: may be missing as an ancestor of this view

swift - 如何在 SwiftUI 中使用 inout 而不是 Binding?

swiftui - 何时是在 SwiftUI View 中评估 ViewBuilder 的正确时间

html - 单选按钮在 iPad 上显示不正确

ios - 切换到 UIPageViewControllerTransitionStyleScroll 后的空白页

ios - 为什么我在 Objective-C 中的枚举上收到类型冲突警告?

ios - Swift 4 - SceneKit 上的 SpriteKit - 防止触摸底层相机控件