xcodestoryboardswiftui

Is there any way to use storyboard and SwiftUI in same iOS Xcode project?


As Swift 5 introduces the SwiftUI framework for creating the views, but we are currently using the storyboard for UI design.

So I just wanted to know the procedure to use Storyboard and Swift UI in same iOS Single View Application.


Solution

  • I just started to look at the SwiftUI. Sharing a small example.

    1. In the storyboard add Hosting View Controller
    2. Subclass the UIHostingController with your own class (ChildHostingController) enter image description here
    3. ChildHostingController should look something like that:
    
    import UIKit
    import SwiftUI
    
    struct SecondView: View {
      var body: some View {
          VStack {
              Text("Second View").font(.system(size: 36))
              Text("Loaded by SecondView").font(.system(size: 14))
          }
      }
    }
    
    class ChildHostingController: UIHostingController<SecondView> {
       
        required init?(coder: NSCoder) {
            super.init(coder: coder, rootView: SecondView())
        }
           
        override func viewDidLoad() {
            super.viewDidLoad()
        }
    }
    
    

    For more details have a look at Custom UIHostingController
    Apple Docs UIhostingController (Unfortunatelly it hasn't been documented yet)
    Integrating SwiftUI Video