SwiftUi Tabview 在开始时未正确加载该视图
Posted
技术标签:
【中文标题】SwiftUi Tabview 在开始时未正确加载该视图【英文标题】:SwiftUi Tabview not loading that views properly at start 【发布时间】:2022-01-17 12:38:12 【问题描述】:我是 swiftui 和一般编程的新手,所以如果我没有使用正确的语言,请原谅。
我的问题是,一旦我的应用程序启动,它就会显示一个非常奇怪的视图,顶部有一个导航栏和一个空白屏幕。我必须来回滑动几次才能使应用程序按预期运行。这是问题的Video。
所以在我的内容视图文件中,我有一个标签栏,其中引用了我的其他 2 个视图。
TabView
SearchPageView()
.tabItem
Image(systemName: "magnifyingglass")
.font(.system(size: 25, weight: .bold))
MainPageView()
.tabItem
Image(systemName: "house")
.tabViewStyle(PageTabViewStyle(indexDisplayMode: .never))
.ignoresSafeArea()
我为每个视图创建了一个单独的文件。这两个视图都包含在 naviagtionView 中,因为稍后我使用导航链接导航到单独的视图。除了滚轮的类型外,两页的书写方式完全相同,一个是水平的,另一个是垂直的。
NavigationView
VStack
Spacer()
Text("Friends")
.foregroundColor(.white)
.font(.largeTitle)
.fontWeight(.bold)
ScrollView(.horizontal,showsIndicators: false)
HStack
ForEach(users) users in
NavigationLink(destination: UserDisplayPage(user: users).navigationTitle("")
.navigationBarHidden(true)
)
VStack(alignment: .center)
Image(users.imageName)
.resizable()
.aspectRatio( contentMode: .fill)
.frame(width: imageSize, height: imageSize
)
.cornerRadius(imageSize/2)
.overlay(
Circle().stroke(Color.white, lineWidth: 5)
)
.padding()
Text(users.name)
.font(.title)
.fontWeight(.bold)
.foregroundColor(.white)
Spacer()
.background(
LinearGradient(colors: [.myPurple,.myCyan,.myOrange], startPoint: .topLeading, endPoint: .bottomLeading)
)
.navigationTitle("Good Evening, Nihal")
.foregroundColor(.myOrange)
感谢任何帮助。提前致谢。
【问题讨论】:
【参考方案1】:您应该删除 ContentView 中的 .tabViewStyle
修饰符。
TabView
在 SwiftUI 中有两个截然不同的角色。一种是管理标签栏,您可以点击标签栏中的图标来选择要显示的视图;另一种是提供可滑动的分页视图集合。
鉴于您在子视图中使用了NavigationView
,我想说第一种样式就是您想要的样式。这是默认设置,所以删除样式修饰符(将选项卡视图切换到第二种形式),一切都会好起来的。您还应该能够删除 .ignoresSafeArea
修饰符。
【讨论】:
我按照你的建议做了,效果很好。但是,我想知道是否可以创建一个可滑动的 tabview 而不会出现导航错误。 删除 .tabViewStyle 将解决您的问题,但由于使用了导航视图,因此无法使用滑动/滑动效果。如果您从视图中删除 navigationView,您将能够滑动/滑动,但不能使用其他功能,例如工具栏项。以上是关于SwiftUi Tabview 在开始时未正确加载该视图的主要内容,如果未能解决你的问题,请参考以下文章
TabView 在 iOS13 SwiftUI 上无法正常工作
SwiftUI TabView 如何在第二个选项卡单击时加载更多数据