You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS13设备TabItem切换功能异常,无法正确加载对应UI界面

问题根因

该问题是iOS 13系统SwiftUI的已知兼容性缺陷:TabView加载UIViewControllerRepresentable包装的UIKit视图控制器时,不会自动为其设置匹配父容器的布局尺寸,导致视图默认尺寸为0,视觉上表现为切换标签后无内容显示,该问题在iOS 14及以上系统已被官方修复。

修复方案

只需为每个DetestVXViewController实例添加填充父容器的frame修饰符即可,修改后代码如下:

struct ContentView: View {
    private enum Tab: Hashable {
           case one
           case two
    }
    @State private var selectedIndex = Tab.one
    var body: some View {
        TabView(selection: $selectedIndex) {
            DetestVXViewController(bgColor: .red)
                .frame(maxWidth: .infinity, maxHeight: .infinity)
                .tabItem {
                    Text("123")
                }.tag(Tab.one)
            DetestVXViewController(bgColor: .green)
                .frame(maxWidth: .infinity, maxHeight: .infinity)
                .tabItem {
                    Text("321")
                }.tag(Tab.two)
        }
    }
}

备选方案

如果上述修改仍无法解决问题,可完全使用UIKit的UITabBarController实现标签栏逻辑,再通过UIViewControllerRepresentable包装后放入SwiftUI视图树中,该方式对iOS 13的兼容性更好。


内容的提问来源于stack exchange,提问作者Bhupesh Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 09:18:02