ios – Pass environment variable from UIKit to SwiftUI view


I am adding a SwiftUI view in UIKit via UIHostingController. I want to do pass an environment object for custom key like this in my UIViewController:

  private var settingsEnvModeVal:Bool = false {
       didSet {
          NSLog("Env Variable changed")
        }
  }

  func openSettings() {
       let settingsUI = SettingsUI()
                       .environment(\.modalMode, $settingsEnvModeVal) 
    // Does not build, how to fix it?
   
       let settingsController = UIHostingController(rootView: settingsUI)
   
       settingsController.modalPresentationStyle = .formSheet
       self.present(settingsController, animated: true)
    }

 // define env key to store our modal mode values
   struct ModalModeKey: EnvironmentKey {
      static let defaultValue = Binding<Bool>.constant(false) 
   }

 
   extension EnvironmentValues {
     var modalMode: Binding<Bool> {
       get {
           return self[ModalModeKey.self]
       }
        set {
           self[ModalModeKey.self] = newValue
        }
       }
   }

The code doesn’t build, how do I get something like this working?

Latest articles

spot_imgspot_img

Related articles

Leave a reply

Please enter your comment!
Please enter your name here

spot_imgspot_img