ios - 使用 SwiftUI 扁平化元组视图
问题描述
好的,本周发布了 SwiftUI,所以我们都是 n00bs 但是......我有以下测试代码:
var body: some View {
switch shape {
case .oneCircle:
return ZStack {
Circle().fill(Color.red)
}
case .twoCircles:
return ZStack {
Circle().fill(Color.green)
Circle().fill(Color.blue)
}
}
}
这会产生以下错误:
函数声明了一个不透明的返回类型,但其主体中的返回语句没有匹配的底层类型
发生这种情况是因为第一个 ZStack 是这种类型:
ZStack<ShapeView<Circle, Color>>
第二个是这种类型:
ZStack<TupleView<(ShapeView<Circle, Color>, ShapeView<Circle, Color>)>>
我如何在 SwiftUI 中处理这个问题?它们可以以某种方式展平或使其符合相同的类型。
解决方案
解决此问题的一种方法是使用类型橡皮擦AnyView
:
var body: some View {
switch shape {
case .oneCircle:
return AnyView(ZStack {
Circle().fill(Color.red)
})
case .twoCircles:
return AnyView(ZStack {
Circle().fill(Color.green)
Circle().fill(Color.blue)
})
}
}
推荐阅读
- capl - GPIB 的 CAPL 样品(类型 VISA / E3648A)?
- java - 为什么 maven-failsafe-plugin 不显示执行的宁静测试?
- mysql - 对--compatible的无效模式:mysql40
- android - 强制重新启动完整的应用程序以刷新 Cordova 中的包
- apache-kafka - 在 Kafka 0.10.2.x 中为代理设置 log.retentions.hours
- javascript - 如何限制 textarea 上的“撤消/重做”事件?
- perl - 动态增加 Text::TabularDisplay 中的列大小
- node.js - Unable to access response object data outside the function in node js
- postgresql - 使用 Postgres 创建多个脚本的问题
- excel - VBA 到 GAS 脚本转换