想定
メインViewにButtonを配置して、Button押下時sheetを表示する。
sheet上のButtonを押下するとsheetを閉じ、メイン画面上のTextを任意の文字列にしたい。
起きている問題
sheet上のbuttonを押下時に、Textの文字が変更されない。
下記の様な流れを想定しています。
①Button押下
②testFunc()実行
③testValueの値が「353535353」に変化
④メイン画面のText(test,testValue)が変化し画面表示も変更
実際は、③辺りで何か起きている様です。
printの「処理した」表示はコンソール画面で確認できています。
どの様にすれば、想定通り動作するでしょうか?
お力をお借りできると有り難いです。
コード
swift
1import SwiftUI 2 3struct ContentView: View { 4 @ObservedObject var test:testClass = testClass() 5 var body: some View { 6 VStack { 7 Text(test.testValue) 8 Button(action:{ 9 test.def.toggle() 10 }){ 11 Text("クリック") 12 } 13 .sheet(isPresented: $test.def){ 14 SecondView(def: $test.def,testValue: $test.testValue) 15 } 16 } 17 .padding() 18 } 19} 20 21class testClass: ObservableObject{ 22 @Published var def:Bool = false 23 @Published var testValue:String = "なにも入ってない" 24 25 func testFunc(){ 26 testValue = "353535353" 27 print("処理した") 28 } 29}
swift
1import SwiftUI 2 3struct SecondView: View { 4 @Binding var def:Bool 5 @Binding var testValue:String 6 var body: some View { 7 Button(action:{ 8 def = false 9 testClass().testFunc() 10 }){ 11 VStack{ 12 Text("testValue") 13 } 14 } 15 } 16}

回答1件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。
2022/10/05 04:12
2022/10/05 05:36