相关疑难解决方法(0)

使用@ViewBuilder创建支持多个子视图的视图

SwiftUI中的某些视图(例如VStack和HStack)支持将多个视图作为子视图,如下所示:

VStack {
  Text("hello")
  Text("world")
}
Run Code Online (Sandbox Code Playgroud)

从我收集,他们使用ViewBuilder使之成为可能的解释在这里

我们如何使用@ViewBuilder创建自己的支持多个子视图的视图?例如,假设我要创建一个Layout接受任意子级的View,如下所示:

struct Layout : View {
  let content: Some View 

  var body : some View {
    VStack {
      Text("This is a layout")
      content()
    }
  } 
}
Run Code Online (Sandbox Code Playgroud)

知道如何在SwiftUI中实现此模式吗?

swift swiftui

6
推荐指数
2
解决办法
2141
查看次数

如何在 SwiftUI 中循环视图构建器内容子视图

所以我试图创建一个视图,它接受 viewBuilder 内容,循环内容的视图并在每个视图和另一个视图之间添加分隔符

struct BoxWithDividerView<Content: View>: View {
    let content: () -> Content
    init(@ViewBuilder content: @escaping () -> Content) {
        self.content = content
    }
    var body: some View {
        VStack(alignment: .center, spacing: 0) {
            // here
            
        }
        .background(Color.black)
        .cornerRadius(14)
    }
}
Run Code Online (Sandbox Code Playgroud)

所以在我写“here”的地方,如果有意义的话,我想遍历内容的视图。我将编写一个不起作用的代码,但它解释了我想要实现的目标:

ForEach(content.subviews) { view  in
     view
     Divider()
}
Run Code Online (Sandbox Code Playgroud)

怎么做?

custom-view swiftui viewbuilder

6
推荐指数
2
解决办法
778
查看次数

SwiftUI 将 TupleView 转换为 AnyView 数组

代码

我有以下代码:

struct CustomTabView: View where Content: View {

    let children: [AnyView]

    init(@ViewBuilder content: @escaping () -> Content) {
        self.content = content

        let m = Mirror(reflecting: content())
        if let value = m.descendant("value") {
            let tupleMirror = Mirror(reflecting: value)
            let tupleElements = tupleMirror.children.map({ AnyView($0.value) }) // ERROR
            self.children = tupleElements
        } else {
            self.children = [AnyView]()
        }
    }

    var body: some View {
        ForEach(self.children) { child in
            child...
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

问题

我正在尝试将 转换TupleView为数组,AnyView但我收到错误

Protocol type 'Any' …
Run Code Online (Sandbox Code Playgroud)

swift swiftui

4
推荐指数
1
解决办法
1406
查看次数

标签 统计

swiftui ×3

swift ×2

custom-view ×1

viewbuilder ×1