在 SwiftUI 中使用 TabView 时 NavigationView 无法正确显示
NavigationView doesn't display correctly when using TabView in SwiftUI
大家好。我正在开发一个显示一些推文的简单 SwiftUI 应用程序。它有一个带有两个视图的选项卡视图:将显示推文的主页和一个辅助视图。
问题是主页有一个NavigationView
。如果我选择只显示主页,一切似乎都是正确的,但是当我从 TabView
显示它并向下滚动时,NavigationView 感觉有点奇怪。
由于我不擅长解释,这里有一些图片:
应该是这样的
但是是这样的
我想添加.edgesIgnoringSafeArea(.top)
,但是NavigationView现在被缺口隐藏了,没有效果。
有什么方法可以让 NavigationView 像第一张图片那样显示吗?
感谢任何帮助。提前致谢。
我的代码
HomePageView:
struct HomePageView: View {
var body: some View {
NavigationView {
List {
//tweet code
}
.navigationBarTitle("Your feed")
}
}
}
TabView:
struct TabController: View {
@State private var selection = 0
var body: some View {
TabView(selection: $selection){
HomePageView()
.tabItem {
VStack {
Image(systemName: "house.fill")
.font(.title)
}
}
.tag(0)
Text("Second View")
.font(.title)
.tabItem {
VStack {
Image(systemName: "bell.fill")
.font(.title)
}
}
.tag(1)
}
}
}
尝试将 .edgesIgnoringSafeArea(.top)
添加到您的标签视图。
struct ContentView: View {
@State private var selection = 0
var body: some View {
TabView(selection: $selection){
HomePageView()
.tabItem {
VStack {
Image(systemName: "house.fill")
.font(.title)
}
}
.tag(0)
Text("Second View")
.font(.title)
.tabItem {
VStack {
Image(systemName: "bell.fill")
.font(.title)
}
}
.tag(1)
}.edgesIgnoringSafeArea(.top)
}
}
大家好。我正在开发一个显示一些推文的简单 SwiftUI 应用程序。它有一个带有两个视图的选项卡视图:将显示推文的主页和一个辅助视图。
问题是主页有一个NavigationView
。如果我选择只显示主页,一切似乎都是正确的,但是当我从 TabView
显示它并向下滚动时,NavigationView 感觉有点奇怪。
由于我不擅长解释,这里有一些图片:
应该是这样的
但是是这样的
我想添加.edgesIgnoringSafeArea(.top)
,但是NavigationView现在被缺口隐藏了,没有效果。
有什么方法可以让 NavigationView 像第一张图片那样显示吗?
感谢任何帮助。提前致谢。
我的代码
HomePageView:
struct HomePageView: View {
var body: some View {
NavigationView {
List {
//tweet code
}
.navigationBarTitle("Your feed")
}
}
}
TabView:
struct TabController: View {
@State private var selection = 0
var body: some View {
TabView(selection: $selection){
HomePageView()
.tabItem {
VStack {
Image(systemName: "house.fill")
.font(.title)
}
}
.tag(0)
Text("Second View")
.font(.title)
.tabItem {
VStack {
Image(systemName: "bell.fill")
.font(.title)
}
}
.tag(1)
}
}
}
尝试将 .edgesIgnoringSafeArea(.top)
添加到您的标签视图。
struct ContentView: View {
@State private var selection = 0
var body: some View {
TabView(selection: $selection){
HomePageView()
.tabItem {
VStack {
Image(systemName: "house.fill")
.font(.title)
}
}
.tag(0)
Text("Second View")
.font(.title)
.tabItem {
VStack {
Image(systemName: "bell.fill")
.font(.title)
}
}
.tag(1)
}.edgesIgnoringSafeArea(.top)
}
}