我正在使用SwiftUI
编写应用程序,但是NavigationView
和Navigation Link
遇到了一些问题,如下面的模拟器视频所示。该项目已创建为Single View App
。
我有三页,正如您所看到的,当我将我从一页转移到另一页时,它在第一页的下面建立了第二页,并且没有分配第一页,因此我遇到了同样的问题第三页:它在第二页的下面创建,我什至可以通过左上方有问题的back
按钮返回第一页。
视频:
这是三个页面的代码:
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()
}
}
视频:
再次感谢!
答案 0 :(得分:1)
您当前的代码正在将NavigationView
中的second
嵌套在first
中的那个内部。
要解决此问题,您只需删除NavigationView
中的second
:
struct second: View {
var body: some View {
NavigationLink(destination: third()) {
Text("second link")
}
}
}