首页 > 解决方案 > 如何通过循环组合文本视图?

问题描述

我们可以使用 + 从几个小的文本视图中创建新的文本视图,这是一种创建更高级格式的简单方法。例如,这会创建三个不同颜色的文本视图并将它们组合在一起:

struct ContentView: View {
   var body: some View {
       Text("Colored ")
           .foregroundColor(.red)
       +
       Text("SwifUI ")
        .foregroundColor(.green)
       +
       Text("Text")
           .foregroundColor(.blue)
   }   
}

但是如何通过循环创建组合文本视图。例如(这不起作用)

   View v;
   ForEach((1...3), id: \.self) {
      v.append(Text("\($0)"))
   }

标签: swifttextviewswiftui

解决方案


您实际上是在尝试Text从序列中获取类型的表达式0...3。您可以先mapText对象进行序列化。如何将一系列对象组合成一个对象?reduce

(1...3).map { Text("\($0)") }.reduce(Text(""), +)

请注意,它Text("")的行为类似于+操作的标识元素。


推荐阅读