Swift/SwiftUIにてボタンをタップするとシートが表示され、その際ボタンと同じ名前(山田又は佐藤)をシート上で表示するというものを勉強のために作っています。
しかし、実際に動作させてみると2回目以降しかシート側にはパラメータが渡されません。
より具体的には1度目に操作したボタン以外のボタン(例えば山田を最初にタップした場合は次に佐藤をクリックする等)が操作されるまで値が渡されていない状況となっています。
なぜこのような事になるのか色々とし調べていますが、よくわかりません。
雰囲気的にはボタンを操作したイベントにより変数に値をセットしているわけですが、その反映タイミングが異なるのかな?と考えていますが、なぜそのような事が発生するのかわかりません。
なお、1度でも反映されれば、その後は想定通りに動作します。
なぜこのような挙動になるのでしょうか。
またどうすれば即時反映されるようになるのでしょうか。
import SwiftUI struct ContentView: View { @State var name:String = "" @State var showSheet:Bool = false var body: some View { VStack { Button(action: { name = "山田" showSheet = true }) { Text("山田") } Button(action: { name = "佐藤" showSheet = true }) { Text("佐藤") } }.sheet(isPresented: $showSheet) { VStack { Text(name) Spacer() Button(action: { showSheet = false }) { Text("閉じる") } } } } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/09 09:58