Reputation: 603
I have tried integrating a custom UIViewController inside a Swift application but I could not integrate it with SwiftUI elements like Text(). I get this error: Function declares an opaque return type, but has no return statements in its body from which to infer an underlying type. Should I rather use UIView instead of UIViewController?
Upvotes: 6
Views: 12258
Reputation: 454
UIView
’s and UIViewController
’s can be implemented in SwiftUI via their respective classes, UIViewRepresentable
and UIViewControllerRepresentable
.
Apple’s SwiftUI tutorials go over this, and other ways to go about integrating UIKit into SwiftUI.
SwiftUI Tutorials: https://developer.apple.com/tutorials/swiftui/tutorials
Placing a UIView into SwiftUI using UIViewRepresentable: https://developer.apple.com/tutorials/swiftui/creating-and-combining-views ^ see section 5, which uses MKMapView as the UIView
Interfacing with UIKit: https://developer.apple.com/tutorials/swiftui/interfacing-with-uikit
Sorry for the lack of code in my answer, I’m AFK right now. However, the best way to learn is to track down and figure things out yourself. Hope this helps!
Update
If you want to integrate SwiftUI into an existing UIKit application, look into using UIHostingController. It works like:
UIHostingController(rootView: MySwiftUIStruct())
https://developer.apple.com/documentation/swiftui/uihostingcontroller
It allows you to place SwiftUI content in a UIKit application as you would place a UIView or UIViewController in it.
Upvotes: 10