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

多层NavigationLink跳转UIViewControllerRepresentable页面出现空白屏问题

我找到了一个可复现Bug的最小SwiftUI应用示例:

class HelloWorldVC: UIViewController {
    override func loadView() {
        super.loadView()
        let label = UILabel()
        label.text = "Hello, World"
        view.addSubview(label)

        label.translatesAutoresizingMaskIntoConstraints = false
        label.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor).isActive = true
        label.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor).isActive = true
        label.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true
        label.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor).isActive = true
    }
}

struct ViewControllerContainer: UIViewControllerRepresentable {
    let vc: UIViewController

    func makeUIViewController(context: Context) -> some UIViewController { vc }
    func updateUIViewController(_ uiViewController: UIViewControllerType, context: Context) {}
}

struct ContentView: View {
    var body: some View {
        NavigationView {

            // Works:
            //NavigationLink("View UIKit VC", destination: ViewControllerContainer(vc: HelloWorldVC()))

            // Only loads the UIKit view once. It's blank on subsequent tries.
            NavigationLink(
                "Detail Screen",
                destination: NavigationLink(
                    "View UIKit VC",
                    destination: ViewControllerContainer(vc: HelloWorldVC())
                )
            )
        }
    }
}

复现步骤

  • 点击「Detail Screen」
  • 点击「View UIKit VC」,可看到显示“Hello, World”的UIViewController
  • 点击返回按钮
  • 再次点击「View UIKit VC」

预期结果:

  • 可再次看到显示“Hello, World”的UIViewController

实际结果:

  • 仅首次加载正常,后续每次打开均显示空白视图,重复操作现象一致

从第二次尝试开始显示空白屏

注:如代码中注释部分所示,仅使用单层NavigationLink时,功能运行正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 06:27:00