Q&A
Listの中でNavigationLinkを用いています。
ContentViewのそれぞれのRowをArrayViewにそれぞれのタップ時に中の配列を表示したい
実現したいこと
ContentViewのそれぞれのrowをAnotherViewの Listに表示したい
発生している問題・エラーメッセージ
Static method 'buildBlock' requires that 'String' conform to 'View'
該当のソースコード
SwiftUI
1 2import SwiftUI 3var passedPinned: [String]? 4struct ArrayView: View { 5@State var array = [] 6 @State var row : folderRow 7var body: some View { 8NavigationView { 9List{Section(header: Text("array"))NavigationLink(destination: ContentView(textEditorText: array[index], index: index), label: {Text(array[index])}) 10if row = ContentView.aFolder { 11array = ContentView.aFolder 12} 13if row = ContentView.bFolder { 14array = ContentView.bFolder 15} 16else { 17array = ContentView.cArray 18} 19} 20} 21} 22} 23 24struct ContentView: View { 25@State var pinned = ["pinned"] 26@State var aFolder = [""] 27@State var bFolder = [""] 28@State var cFolder = [""] 29 var body: some View { 30 NavigationView { 31 List{ 32folderRow(rowArray: aFolder, rowImage: Image(systemName: "heart"), rowTitle: "Like") 33folderRow(rowArray: bFolder, rowImage: Image(systemName: "trash"), rowTitle: "Dust") 34folderRow(rowArray: cFolder, rowImage: Image(systemName: "folder"), rowTitle: "Folder") 35 Section(header: Text("テキスト")) 36 { 37 ForEach(0..<self.pinned.count) 38 { index in 39 NavigationLink(destination: AnotherView(), label: {Text(pinned[index])}) 40 .onAppear(perform: { 41 if let recive = passedPinned { 42 pinned = recive 43 } 44 }) 45 .onDisappear(perform: {passedPinned = pinned}) 46 } 47 } 48 } 49 } 50 } 51} 52 53struct AnotherView: View { 54 var body: some View { 55 Text("AnotherView") 56 } 57 } 58 59struct folderRow: View { 60@State var rowArray: [String] = [] 61@State var rowImage = Image(systemName: "folder") 62 @State var rowTitle: String 63var body: some View { 64HStack{ 65rowImage 66rowTitle 67Text("\(rowArray).count") 68} 69}} 70
試したこと
補足情報(FW/ツールのバージョンなど)
Xcodeのバージョンは14.1です。
回答1件
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。