【问题标题】:SwiftUI how can I create unique sublists from user inputSwiftUI 如何从用户输入创建唯一的子列表
【发布时间】:2021-08-08 15:23:23
【问题描述】:

我正在努力从用户文本字段输入中创建一个简单的子列表。

因此,如果用户想要子列表 A 中的子列表 B,则子列表 B 中的子列表 C 等等,无止境。

我试图解决我遇到的问题的方法是;一个列表需要它自己的用户创建的导航链接来创建一个子列表,但是我怎样才能重复这些子列表(比如从一个文本字段中)并让它们能够在无穷无尽的子列表中重复。

本质上,每当用户创建子列表时,我都需要生成一个唯一的目标视图,该视图需要保存自己的列表项并能够生成更多唯一的目标视图等。

import SwiftUI
import Foundation

struct Item: Identifiable {
     let id = UUID()
     let title: String
     let children: [Item]?
 }

struct ContentView: View {

@State var items: [Item] = [
        Item(title: "List", children: [
        Item(title: "subList A", children: nil)])
    ]

     var body: some View {
 VSTack {
        List(items, children: \.children) {
             Text($0.title)
        }
    }
     }
 }

那么是否可以根据用户输入在层次结构中的任何位置附加将创建新子列表的项目数组?

【问题讨论】:

  • 您有任何代码可以与您当前的方法共享吗?
  • 添加了一些代码,感谢您的建议!

标签: swift list navigation


【解决方案1】:

我不知道这是否足以回答您的问题,但基本上您可以通过已发布的变量(基本上是您喜欢的任何类型的输入)收听用户输入,并且当您收到输入时,您可以递归检查您想要的任何条件,例如, 检查 children 是否为 nil

func addChildrenToHiercy(withItems items: [Item], parent: [Items]) {
    if let children = parent.children {
        self.addChildrenToHiercy(withItems: items, parent: children)
    }  else {
        parent.children = items
    }
}

现在,每次您调用“addChildrenToHiercy”时,他都会为您的 hiarcy 中的 nil 值子项添加一个子列表。

【讨论】:

    猜你喜欢
    • 2021-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-20
    • 2021-12-13
    • 1970-01-01
    • 2018-01-09
    • 1970-01-01
    相关资源
    最近更新 更多