SwiftUI中AVPlayerControllerRepresented不遵循UIViewControllerRepresentable协议问题
解决SwiftUI中AVPlayerControllerRepresented不遵循UIViewControllerRepresentable协议的问题
核心原因及修复方案
1. 缺失AVKit框架导入
AVPlayerViewController属于AVKit框架范畴,若未导入该框架,Xcode无法正确识别协议要求的关联类型,进而误报协议未遵循。
修复方式:在代码文件顶部添加AVKit导入语句:
import SwiftUI import AVKit
2. 移除冗余关联类型声明(可选优化)
虽然显式声明typealias UIViewControllerType = AVPlayerViewController本身无语法错误,但Xcode可通过makeUIViewController的返回值自动推断关联类型,移除该声明能避免潜在的类型匹配问题:
struct AVPlayerControllerRepresented : UIViewControllerRepresentable { var player : AVPlayer func makeUIViewController(context: Context) -> AVPlayerViewController { let controller = AVPlayerViewController() controller.player = player return controller } func updateUIViewController(_ uiViewController: AVPlayerViewController, context: Context) { } }
3. 确认SwiftUI框架已导入
确保文件顶部已导入SwiftUI框架,因为UIViewControllerRepresentable协议归属SwiftUI:
import SwiftUI
验证修复
完成上述操作后,执行Command+Shift+K清理项目,重新编译即可消除协议未遵循的错误提示。
内容的提问来源于stack exchange,提问作者Jakub Dymowski
相关产品推荐
相关产品推荐

