swiftui - 在 NavigationLink 之后,在 NavigationView 内、TabView 内显示 NavigationBar。SwiftUI
问题描述
我正在制作一个用户需要登录的应用程序,然后将我带到一个 TabView,其中我有 3 个不同的视图(导航视图)。
问题是在我登录后,并使用 NavigationLink 将我发送到 TabView,以向我显示 3 个不同的视图,其中我有 NavigationBarTitles;它还在我的之上创建了另一个(空)NavigationBarTitle。
已经尝试使用以下常用方法: 在此单个视图中,消除 NavigationView 属性,因为它通常可以工作,但在这种情况下不行。
登录视图
import SwiftUI
struct LogInView: View {
var body: some View {
NavigationView {
VStack {
NavigationLink (destination: ContentView()) {
Text("Log In")
.foregroundColor(.white)
.padding(15)
.background(Color.blue)
.cornerRadius(10)
}
}.navigationBarTitle("Log In View")
}
}
}
struct LogInView_Previews: PreviewProvider {
static var previews: some View {
LogInView()
}
}
选项卡
import SwiftUI
struct ContentView: View {
@State private var selection = 0
var body: some View {
TabView(selection: $selection){
DetailView()
.font(.title)
.tabItem {
VStack {
Image("first")
Text("First")
}
}
.tag(0)
}.edgesIgnoringSafeArea(.top)
.navigationBarBackButtonHidden(true)
.navigationBarHidden(true)
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
详细视图
import SwiftUI
struct DetailView: View {
var body: some View {
NavigationView {
List {
Text("Hi")
Text("Hi")
Text("Hi")
}.navigationBarTitle("DetailView")
}
}
}
struct DetailView_Previews: PreviewProvider {
static var previews: some View {
DetailView()
}
}
解决方案
NavigationView
如果子视图的父视图(或其父视图的父...)被包裹在一个中,则不应将其包裹在其中。您只是在显示的照片上有两个NavigationView
s,因此在 DetailView 中删除一个,它仍然会继承自 LogInView:
struct DetailView: View {
var body: some View {
List {
Text("Hi")
Text("Hi")
Text("Hi")
}
.navigationBarTitle("DetailView")
}
}
推荐阅读
- java - 微调器上 findViewById 的 Android NullPointerException
- javascript - 跨节点边界时如何用多个元素包装getSelection()
- java - JavaFX 剪贴板和 lostOwnership
- javascript - 有没有办法在 VS Code 中使用未知/任何类型(仅假定存在)标记标识符来制作 JS 编辑器?
- mongodb - 如何在 Apache NiFi 中访问 MongoDB 文档中的字段
- html - 悬停时不出现下拉菜单
- javascript - 正则表达式删除某些字符前后的引号
- javascript - firebase 云功能 - 部署错误找不到所需的模块
- python - 当每批中的观察值具有不同数量的缺失值时使用 Keras 掩蔽层
- ios - Swift - 在应用程序中显示来电者姓名