ContentView.swift
NavigationLink(destination: CounterPage(message: userMessage)) { Text("カウンターページへ") .foregroundColor(.white) .padding() .background(Color.green) .cornerRadius(8) }
CounterPage.swift
struct CounterPage: View { let message: String @State private var count = 0 var body: some View { VStack(spacing: 20) { Text("受け取ったメッセージ:") Text(message) // ← 表示して確認 .font(.title) .foregroundColor(.blue) // 省略
ContentView.swiftで、api側にデータを送る際には、 TextField(“メッセージを入力”, text: $userMessage) としているのに、今回は NavigationLink(destination: CounterPage(message: userMessage)) としている
「text: $userMessage」と「message: userMessage」の違いは バインディング(Binding)か値のコピーか
1. text: $userMessage
$ をつけると バインディング(Binding) を渡している。
バインディングは「元の変数と直接つながっている参照」のようなもの。
TextField の入力が変わると、自動的に @State var userMessage の値も更新される。
👉 双方向のデータやり取りが可能。
例:入力欄に文字を打つと userMessage が変わるし、逆に userMessage を変えても入力欄が変わる。
2. message: userMessage
$ がついていないので、ただの 値のコピー を渡している。
遷移先 CounterPage の message: String に「現在の値」を渡すだけ。
遷移先で message を書き換えても、元の userMessage には影響しない。
元の画面で変更内容を反映させたい時などはbindingの方が良い