我正在使用 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()
}
}
视频:
再次感谢!
最佳答案
您当前的代码正在做的是将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/