SwiftUI中如何访问TupleView的视图?解决TupleView成员访问报错问题
解决TupleView元素访问的问题
嘿,我一眼就看出问题所在啦!你代码里的content是一个闭包类型(() -> TupleView<(Content1, Content2)>),而不是直接的TupleView实例,所以直接用.0、.1去访问肯定会报错——闭包本身没有这些成员呀!
要解决这个问题,你需要先执行这个闭包拿到TupleView实例,然后通过它的value属性来访问内部的元组元素,具体修改如下:
struct ContentView: View { var body: some View { CustomView { Text("Hello, world!") Text("Hello, world!") } } } struct CustomView<Content1: View, Content2: View>: View { @ViewBuilder let content: () -> TupleView<(Content1, Content2)> var body: some View { // 先执行闭包拿到TupleView实例,再取它的value属性 let contentTuple = content().value return VStack { contentTuple.0.background(Color.red) contentTuple.1.background(Color.yellow) } } }
关键修改点:
- 新增
let contentTuple = content().value:先调用content()执行闭包,得到TupleView实例,再通过.value获取它包装的元组 - 之后直接用
contentTuple.0和contentTuple.1就能访问对应的视图元素了
简单来说,TupleView只是一个包装器,真正的元组数据存在它的value属性里,而你之前忘了先执行闭包拿到这个包装器实例~
内容的提问来源于stack exchange,提问作者swiftPunk
相关产品推荐
相关产品推荐

