お世話になっております。
SwiftUIにおいて.sheetを使う際 sheet上で値が更新されないので困っております。
以下のコードはテキストをタップすると変数textが"A"から"B"に変わり.sheetが発火するコードになっていますが,
sheet上表示されるテキストは"A"のままです。
isPresentedをtrueにした後に出力して確認するとtextは"B"にちゃんと変わっています。
しかしこれで何回テキストをタップしても画面上の表示は変わりません。
なぜ遅延処理などもしているのに変わらないのでしょうか
原因もしくは解決策を教えていただきたいです。
よろしくお願いいたします。
Swift
1import SwiftUI 2 3struct ContentView: View { 4 @State var isPresented = false 5 @State var text = "A" 6 7 var body: some View { 8 9 Text("Hello, world!") 10 .padding().onTapGesture { 11 text = "B" 12 DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) { 13 isPresented = true 14 print("text",text)//出力結果: text B 15 } 16 }.sheet(isPresented: $isPresented) { 17 Text(text)//ここではAと表示されてしまう 18 } 19 } 20} 21 22struct ContentView_Previews: PreviewProvider { 23 static var previews: some View { 24 ContentView() 25 } 26} 27
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/05/09 09:48
2022/05/09 10:18
2022/05/09 10:31