И UIViewRepresentable
и UIViewControllerRepresentable
is-a View
и должны быть struct .
В описанном случае представление контроллера не требуется, поскольку вы работаете с представлением, Итак, вот исправленный код:
struct PageFourView: UIViewRepresentable {
@EnvironmentObject var data: Data
func makeUIView(context: Context) -> UIView {
let view = UIView(frame: CGRect(x:0, y:0, width: UIScreen.main.bounds.size.width,
height: UIScreen.main.bounds.size.height))
view.contentMode = UIView.ContentMode.scaleAspectFit
print(context.environment)
print(self.data.Name)
return view
}
func updateUIView(_ uiView: UIView, context: Context) {
}
}
кстати, вам не нужно передавать .environmentObject
в подпредставления в той же иерархии представлений, только для новой иерархии, например листов, поэтому вы можете использовать упрощенный код, как показано ниже
var body: some View {
TabView {
PageOneView()
.tabItem {
Text("PageOne")
}
PageTwoView()
.tabItem {
Text("PageTwo")
}
PageThreeView()
.tabItem {
Text("PageThree")
}
PageFourView()
.tabItem {
Text("PageFour")
}
}
}
Обновление: для CameraViewController
просто оберните его, как показано ниже
struct CameraView: UIViewControllerRepresentable {
func makeUIViewController(context: Context) -> CameraViewController {
CameraViewController()
}
func updateUIViewController(_ uiViewController: CameraViewController, context: Context) {
}
}