多层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
相关产品推荐
相关产品推荐

