Xcode 16中UIViewControllerRepresentable存根实现报错求助
问题
在Xcode 16.0中创建UIViewControllerRepresentable结构体时,持续收到“未实现协议存根方法”的报错。手动添加typealias、通过Xcode自动生成存根或手写makeUIViewController与updateUIViewController方法后,错误仍未消除;点击“修复”按钮又会提示方法重复声明。
相关代码:
struct PassVC: UIViewControllerRepresentable { typealias UIViewControllerType = UIViewController func makeUIViewController(context: Context) -> UIViewController { let vc = UIViewController() vc.view.backgroundColor = .yellow return vc } func updateUIViewController(_ uiViewController: UIViewController, context: Context) { } }
报错提示:Type 'PassVC' does not conform to protocol 'UIViewControllerRepresentable'
解决方法
导入必要框架:
UIViewControllerRepresentable属于SwiftUI协议,代码中必须导入SwiftUI;同时因使用了UIViewController,也需要导入UIKit。在文件顶部添加:import SwiftUI import UIKit移除多余的关联类型声明:Xcode 16对应的Swift版本中,
UIViewControllerRepresentable的UIViewControllerType可通过方法返回值自动推断,手动添加typealias UIViewControllerType = UIViewController会导致协议实现冲突,直接删除该行即可。
修改后的完整代码:
import SwiftUI import UIKit struct PassVC: UIViewControllerRepresentable { func makeUIViewController(context: Context) -> UIViewController { let vc = UIViewController() vc.view.backgroundColor = .yellow return vc } func updateUIViewController(_ uiViewController: UIViewController, context: Context) { } }
- 清理缓存并重新编译:若上述操作后报错依旧,使用
Cmd+Shift+K清理项目缓存,再执行Cmd+B重新编译,解决Xcode缓存引发的识别异常。
内容的提问来源于stack exchange,提问作者Badr Bujbara
相关产品推荐
相关产品推荐

