TabView 在 iOS13 SwiftUI 上无法正常工作
Posted
技术标签:
【中文标题】TabView 在 iOS13 SwiftUI 上无法正常工作【英文标题】:TabView does not work correctly on iOS13 SwiftUI 【发布时间】:2020-11-08 21:36:16 【问题描述】:我创建了一个包含 4 个项目的 TabView,但在 ios 13.x 中,只有第一个视图可以正确显示。 当我单击另一个项目的图标时,视图未正确显示,但应用程序仅显示白色视图。如果我在 iOS > 14 上运行该应用程序,我可以正确查看所有视图。
TabView 实现:
struct ContentView: View
private enum Tab: Hashable
case discovery
case qrcode
case devices
case settings
@State private var selectedTab: Tab = .discovery
var body: some View
NavigationView
TabView(selection: $selectedTab)
DiscoveryView()
.tabItem
VStack
Image(systemName: "lock.rotation.open")
Text("Discovery")
.tag(0)
QrCodeView()
.tabItem
VStack
Image(systemName: "qrcode.viewfinder")
Text("QrCode")
.tag(1)
DevicesView()
.tabItem
VStack
Image(systemName: "qrcode.viewfinder")
Text("My devices")
.tag(2)
SettingsView()
.tabItem
VStack
Image(systemName: "gear")
Text("Settings")
.tag(3)
其中一种观点的实现:
struct QrCodeView: View
var body: some View
Text("QrCode")
我哪里做错了?
【问题讨论】:
【参考方案1】:这可能是selection
的原因...selection
和tag
类型应该相同,所以试试
@State private var selectedTab: Tab = .discovery
var body: some View
NavigationView
TabView(selection: $selectedTab)
DiscoveryView()
.tabItem
VStack
Image(systemName: "lock.rotation.open")
Text("Discovery")
.tag(.discovery) // << here !!
QrCodeView()
.tabItem
VStack
Image(systemName: "qrcode.viewfinder")
Text("QrCode")
.tag(.qrcode) // << here !!
// ... others the same
【讨论】:
以上是关于TabView 在 iOS13 SwiftUI 上无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章
在 SwiftUI 中构建一个自定义的类 TabView 视图
如何在 SwiftUI 中垂直居中纯文本 TabBar 按钮?
Lottie 动画在 SwiftUI 的最后一个 TabView 页面上消失
SwiftUI:在 Tabview 的 WatchOS 8.1RC 上立即弹出 NavigationLink