前提・実現したいこと
SwiftUI(Swift5)で、iPhoneアプリを開発しています。
商品一覧から商品を選び詳細ページへ遷移させます。
詳細ページに表示する情報は、非同期で別サイトにある情報を取ってきて設定する予定です。
詳細ページに遷移する際、値(id)を詳細ページ渡して、その値(id)で特定して
URLに設定することで、idに紐付けた情報を取っていくることを考えています。
以下のソースで実現しようとしています。
一覧ページの特定の行をタップして、詳細ページを開く時に値(id)を渡して、
詳細ページでモデル(LogItemDetailViewModel)を呼びに、その引数に値(id)を渡して、
非同期で抽出して結果を得たいのですが、うまくいきません。
NavigationLinkに「”詳細ページへ値(id)を渡したい”」に値を設定して、
詳細ページの、「”ここに値(id)を設定したい”」に値したいのですが
どのようにすれば値を受け渡すことができるのかご教示お願い致します。
該当のソースコード
SwiftUI(Swift5)
1// 一覧ページ(TopListView) 2struct TopListView: View { 3 @ObservedObject private var topListVM = TopListViewModel() 4 var body: some View { 5 NavigationView { 6 VStack(alignment: .leading) { 7 List(topListVM.logItemData){item in 8 NavigationLink(destination:LogItemDetailView(”詳細ページへ値(id)を渡したい”)) //<-- 詳細ページへ値(id)を渡したい 9{ 10 LogItemRowView(logItemData:item) 11 } 12 } 13 14 } 15 } 16 } 17} 18 19 20// 詳細ページ(LogItemDetailView) 21struct LogItemDetailView: View { 22 @ObservedObject private var logItemDetailVM = LogItemDetailViewModel(logItemId:”ここに値(id)を設定したい”) //<-- ここに値(id)を設定したい 23 var body: some View { 24 VStack(alignment: .leading) { 25 ・・・・ 26 } 27 } 28} 29 30// モデル(LogItemDetailViewModel) 31class LogItemDetailViewModel: ObservableObject { 32 var logItemId:String = "" 33 private let fetcher = LogItemDetailDataFetcher() 34 @Published var logItemDetailData:LogItemDetail! 35 36 init(logItemId:String) { 37 self.fetcher.logItemId = logItemId 38 self.fetcher.fetchLogItemDetailData { (rests) in 39 self.logItemDetailData = rests // 値(id)で、非同期で抽出したデータを設定する 40 } 41 } 42}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。