NavigationView和NavigationLink在过渡后不删除视图

时间:2019-10-30 16:34:10

标签: 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

再次感谢!

1 个答案:

答案 0 :(得分:1)

您当前的代码正在将NavigationView中的second嵌套在first中的那个内部。

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

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