Listの中でNavigationLinkを使用しています。
配列をそれぞれ別Viewに入れさらにその配列のテキストを別ViewのTextEditorに入れたいです
実現したいこと
配列をそれぞれのセルタップ毎に別Viewで表示しさらにそれらの配列を別ViewのTextEditorに入れたいです
発生している問題・エラーメッセージ
Expected ':' after '? ...' in ternary expression
該当のソースコード
SwiftUI
1 2var passedPinned: [String]? 3 4struct ContentView: View { 5 var aFolder = ["a"] 6 var bFolder = ["b"] 7 var cFolder = ["c"] 8 var dFolder = [folderRow] 9 var body: some View { 10 NavigationView { 11 List{ 12 Section(header: Text("テキスト")) 13 { 14 ForEach(0..<3) 15 { index in 16 NavigationLink(destination: ArrayView(row: (index == 0 ? aFolder : (index == 1 ? bFolder : cFolder))), label: index == 0 ? 17{folderRow(rowArray: aFolder, rowImageString: "heart", rowTitle: "Like")} : (index == 1 ? {folderRow(rowArray: bFolder, rowImageString: "trash", rowTitle: "Dust")} : {folderRow(rowArray: cFolder, rowImageString: "folder", rowTitle: "Folder") : {folderRow(rowArray: dFolder, rowImageString: "folder", rowTitle: "\(yourRowTitle)")})) 18 } 19 } 20 } 21 } 22 } 23} 24 25struct ArrayView: View { 26 @State var row : [String] 27 var body: some View { 28 List{ 29 Section(header: Text("テキスト")) 30 { 31 ForEach(0..<self.row.count) 32 { index in 33 NavigationLink(destination: AnotherView(textEditorText: (index == ContentView.aFolder[index] ? ContentView.aFolder[index] : (index == ContentView.bFolder[index] ? ContentView.bFolder[index] : (ContentView.cFolder[index] ? ContentView.cFolder[index], (ContentView.dFolder[index] ? ContentView.dFolder[index], index: index)), label: {Text(index == ContentView.aFolder[index] ? ContentView.aFolder[index] : (ContentView.bFolder[index] ? ContentView.bFolder[index] : (ContentView.cFolder[index] ? ContentView.cFolder[index], ContentView.dFolder[index] ? ContentView.dFolder[index])))}} 34 .onAppear(perform: { 35 if let recive = passedPinned { 36 row = recive 37 } 38 }) 39 .onDisappear(perform: {passedPinned = row}) 40 41 } 42 } 43 } 44 } 45 46 47 48struct folderRow: View { 49 var rowArray: [String] = [] 50 var rowImageString = "" 51 var rowTitle: String = "" 52 var body: some View { 53 HStack{ 54 Image(systemName: rowImageString) 55 Text(rowTitle) 56 Text("\(rowArray.count)") 57 } 58 }} 59 60struct AnotherView: View { 61 @State var textEditorText: String 62 var index = 0 63 var body: some View { 64 TextEditor(text: $textEditorText) 65 .frame(maxWidth: .infinity, maxHeight: .infinity) 66 .onChange(of: textEditorText){ value in 67 passedPinned![index] = value 68 } 69 } 70} 71
試したこと
補足情報(FW/ツールのバージョンなど)
SwiftUIのバージョンは14.1です。
dFolderには別Viewから任意で追加します。
struct ArrayView: View {
@State var row : [String]
var body: some View {
List{
Section(header: Text("テキスト"))
{
ForEach(0..<self.row.count)
{ index in
NavigationLink(destination: AnotherView(textEditorText: (row[index])))}}
.onAppear(perform: {
if let recive = passedPinned {
row = recive
}
})
.onDisappear(perform: {passedPinned = row})
}
}
}
}
としました。

回答1件
あなたの回答
tips
プレビュー