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の方が良い