Avatar
質問です import SwiftUI import CoreData struct ContentView: View { @State var selectedString: String? = nil @State var showCover = false let strings: [String] = ["a","b","c"] var body: some View { VStack{ List{ ForEach(strings, id: \.self){ string in Button(action:{ selectedString = string showCover = true }){ Text(string) } } } }.fullScreenCover(isPresented: $showCover){ if let string = selectedString { Text(string) } }.onChange(of: selectedString){ newValue in print(selectedString) } } } struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() } } このコードは .onChange(of: selectedString){ newValue in print(selectedString) } があると正常に選んだ文字がモーダルに表示されるのですが、このコードを消すと、真っ白なモーダルが表示されてしまいます。 fullScreenCover(item: selectedString)で表示をすれば正常に動作することは分かったのですが、どうして表示に関係のないonChangeを書くだけで正常に表示されるのか疑問に思ったためもしわかる方いれば教えていただきたいです