【问题标题】:ForEach with Array of Custom Views inside ViewBuilder in swiftuiForEach 在 swiftui 中的 ViewBuilder 中带有自定义视图数组
【发布时间】:2020-09-29 11:16:33
【问题描述】:

我是 iOS 开发的新手。在这里我尝试使用 foreach 循环获取不同的目标视图

struct NewView : View
{
var arrayofviews //here I need array of views
var body:some View
{
  List
  {
   ForEach(array)
   {(item) in
      NavigationLink(destination: item)
      {
       Text("Click Here")
      }
   }
  }
}
}

我试过了

var arrayofviews=[view1(),view2(),view3()] as! [Any]

然后我收到此错误无法将“view1”类型的值转换为预期的元素类型“Array.ArrayLiteralElement”(又名“AnyView”)

这里 view1,view2,view3 是自定义视图

struct view1:View
{
var body:Some View
{
Text("...")
...
}
}
//similarly view2 and view3 also

【问题讨论】:

  • 如果你有一个共同的观点并把它做成一个数组var arrayofviews = [MyView("view1"), MyView("view2"), MyView("view3")],这会更容易。你也可以问问自己是否值得,而不是在没有循环的情况下创建多个导航链接。
  • 尝试使用 var arrayofviews=[AnyView(view1()),AnyView(view2()),AnyView(view3())] 作为! [任何]

标签: swift swiftui swiftui-navigationlink swiftui-foreach


【解决方案1】:
struct NewView : View
{
var arrayofviews=[AnyView(view1()),AnyView(view2()),AnyView(view3())] as! [AnyView] //This helped
var body:some View
{
  List
  {
   ForEach(0..<array.count)
   {(index) in
      NavigationLink(destination: array[index])
      {
       Text("Click Here")
      }
   }
  }
}
}

感谢“Mohammad Rahchamani”的建议!!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-21
    • 2020-06-09
    • 2020-06-19
    • 2021-04-26
    • 2020-12-28
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    相关资源
    最近更新 更多