Я использовал UIHostingController для использования представления SwiftUI в ViewController. В этом представлении SwiftUI я использую две кнопки, которые должны отображать представление Modal SwiftUI при их нажатии. К сожалению, если я нажимаю кнопку, переменная состояния изменяется, но модальное представление не отображается.
Для кнопки я использовал следующий код:
Button(action: {
self.showModal = true
let impactLight = UIImpactFeedbackGenerator(style: .light)
impactLight.impactOccurred()
print("show: ", self.showModal)}) {
Text("ZEIGE STRATEGIE")
.foregroundColor(.black)
.frame(width: 254, height: 37)
.shadow(color: Color.white, radius: 8, x: -9, y: -9)
.shadow(color: Color("neumorphismShadowBlack"), radius: 8, x: 9, y: 9)
.padding(5)
.background(Color("mainBackgroundColor"))
.cornerRadius(20)
}.sheet(isPresented: self.$showModal) {
StrategyView()}
.shadow(color: Color.white, radius: 8, x: -9, y: -9)
.shadow(color: Color("neumorphismShadowBlack"), radius: 8, x: 9, y: 9)
А для UIView я использовал следующий код:
let swiftUIView = RecognitionView(detectedDices: detectedDices)
let uiView = UIHostingController(rootView: swiftUIView)
uiView.view.frame = feedbackView.frame
uiView.view.center = CGPoint(x: feedbackView.frame.size.width / 2,
y:feedbackView.frame.size.height / 2)
feedbackView.addSubview(uiView.view)
Если для showModal вначале установлено значение true, отображается модальное представление, но оно не работает, когда модальное представление должно быть видно, когда кнопка нажата.
Я ценю вашу помощь!