前提・実現したいこと
現状、テキストフィールドに文字列を入力後、ボタンを押すと構造体strsのlargeCateがリスト表示されますがsmallCateの"その他"がネストとして表示できるようにしたいです。
該当のソースコード
swift
1import SwiftUI 2 3struct Sample: View { 4 5 @State var inputStr: String = "" 6 @State var keepStr: String = "" 7 @State var strArray: [strs] = [] 8 9 struct strs: Hashable { 10 var largeCate: String 11 var smallCate: [String] = [] 12 13 init(largeCate: String) { 14 self.largeCate = largeCate 15 smallCate.append("その他") 16 } 17 } 18 19 var body: some View { 20 VStack(spacing: 10){ 21 22 TextField("入力まち", text: $inputStr) 23 .font(.title) 24 .background(checkStr() ? Color.green : Color.gray) 25 .opacity(0.2).cornerRadius(15.0) 26 27 Button(action: { 28 savelargeCateStr() 29 }, label: { 30 /*@START_MENU_TOKEN@*/Text("Button")/*@END_MENU_TOKEN@*/ 31 }) 32 33 List(strArray, id: .hashValue){ num in 34 Text(num.largeCate) 35// List(num, id: .hashValue){ num0 in 36// Text(num0.smallCate) 37// } 38 } 39 40 } 41 42 } 43 44 func checkStr() -> Bool{ 45 if(inputStr.count >= 3){ 46 return true 47 } 48 return false 49 } 50 51 func savelargeCateStr(){ 52 keepStr = inputStr 53 if strArray.count == 0{ 54 strArray = [strs(largeCate: keepStr)] 55 } 56 else{ 57 strArray.append(strs(largeCate: keepStr)) 58 } 59 inputStr = "" 60 } 61 62} 63 64struct Sample_Previews: PreviewProvider { 65 static var previews: some View { 66 Sample() 67 } 68}
試したこと
2D array List とかで検索したり海外の動画も見たりしましたが動的にネスト型のリストの説明をしてるものは見つけられませんでした。
補足情報(FW/ツールのバージョンなど)
Xcode Version 13.0 (13A233)
macOs Big Sur バージョン11.6
回答に対してなんら反応がありませんがどうかされましたか?質問の意図と異なっていたり解決に関係ない回答であった場合はその旨ご指摘いただき質問文へもご反映下さい。
大変遅くなってすみません。さわれない状況が続いてました。
largeCateの右側に下向きの矢印みたいなアイコンが出て、それをタップするとsmallCateが展開されるようにしたかったです。
補足情報に実現したい状態の画像を添付しました。
画像のものは海外の動画で紹介されていたコードをそのまんま書いてみたものです。
この画像のものは配列要素を事前に書いてるものを展開できるようにしてます。
私が実現したのことはlargeCateとsmallCateを動的に表示させたいと思ってます。largeCateはとりあえずこのままでいいかと思ってます。smallCateは展開したり隠したりできるようにし、展開後smallCateの一番下に追加ボタンとかを実装しsmallCateを動的に増やせるようにしたいと思ってます。その前段階としてsmallCateを展開したり隠したりできるようにしたかったです。
回答2件
あなたの回答
tips
プレビュー