質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%

Q&A

解決済

1回答

3530閲覧

SwiftUI ListのNavigationLinkに渡す引数が分かりません。

Motyaruto

総合スコア2

0グッド

0クリップ

投稿2020/08/30 05:46

編集2020/09/01 11:16

実現したいこと

  1. チャンピオン一覧のリストがある
  2. チャンピオンをタップすると、そのチャンピオンの詳細ページへ飛ぶ

このようなコードを目指して書いています。


以下にコードを載せますが、見やすくするために今回の問題と関係ない部分は省いたり消したりしてます。逆に見づらくなってたら申し訳ありません。

[環境] Swift5 SwiftUI

手順

①ID、名前、画像の定数を持つモデルを作る。(ChampionModel)

②そのモデルと配列を使って、Championのデータを複数作る。(champions)

ChampionData

1//ID、名前、画像の定数を持つモデルを作成 2import SwiftUI 3 4struct ChampionModel:Identifiable { 5 let id = UUID() 6 let name: String 7 let image: Image 8} 9 10//モデルと配列を使って複数のChampionのデータを作る 11let champions:[ChampionModel] = [ 12 ChampionModel(name: "urgot", image: Image("urgot_image")), 13 ChampionModel(name: "ahri", image: Image("ahri_image")), 14 ChampionModel(name: "ivern", image: Image("ivern_image")) 15]

③ForEachを使ってリスト表示させ、ChampionDetailへリンクさせる

ChampionList

1struct ChampionList: View { 2 3 var body: some View { 4 NavigationView{ 5 List{ 6 ForEach(champions) { champ in 7 HStack { 8 NavigationLink(destination: ChampionDetail()){ 9 //ここに渡す引数がわかりません 10 11 champ.image 12 13 Text(champ.name) 14 15 } 16 } 17 } 18 }.navigationBarTitle(Text("Champion List")) 19 } 20 } 21}

リンク先になる詳細ページ

ChampionDetail

1import SwiftUI 2 3struct ChampionDetail: View { 4 5 var body: some View { 6 VStack{ 7 8 Text(champ.name) //ここで選択されたChampionの名前と画像を表示させたい 9 champ.image 10 11 } 12 } 13} 14 15struct ChampionDetail_Previews: PreviewProvider { 16 static var previews: some View { 17 BackImage() 18 } 19}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ChampionDetail 側で変数を宣言して初期化時に渡してあげれば良いです。

// ChampionList.swift モデルを詳細画面に渡す NavigationLink(destination: ChampionDetail(champion: champ))
// ChampionDetail.swift struct ChampionDetail: View { // リストから受け取るmodel var champion: ChampionModel var body: some View { print(champion.name) // 省略 } }

投稿2020/08/30 07:36

TakuyaAso

総合スコア1361

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Motyaruto

2020/09/01 11:07

おかげさまで解決することができました。何時間調べても分からず、ここ数日間悩んでいたのが晴れてスッキリしました、本当に感謝しております。 ご丁寧に分かり易く回答していただき、ありがとうございました!
TakuyaAso

2020/09/01 11:36

良かったですー????
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問