ios - HStack 的泛型是什么?
问题描述
作为 iOS 开发课程的一部分,我正在 SwiftUI 中构建一个计算器应用程序。用户界面如下:
我们可以看到,有五行按钮,每个按钮都有一个文本,结果面板也是一个文本。因此,将文本、按钮和行提取到单独的视图中效果很好。以下是创建行的代码。
struct RowView: View {
let buttons: [CalculatorButton]
@Binding var result: String
let calc: Calculator
var body: some View {
createCells(self.buttons)
}
private func createCells(_ buttons: [CalculatorButton]) -> some View {
if buttons.count % 2 == 0 {
return AnyView(HStack(spacing: 1) {
ForEach(buttons, id: \.label) { button in
ButtonView(button: button, result: self.$result, calc: self.calc)
}
})
} else {
return AnyView(HStack(spacing: 1) {
ButtonView(button: buttons[0], result: self.$result, calc: self.calc)
createCells(buttons.suffix(2))
})
}
}
}
这个想法是,如果一行中有偶数个按钮,它们只是水平堆叠。对于最后一行,我们手动放置第一个按钮,然后进行递归调用,将其余两个按钮水平放置。甜的!
但是,AnyView(HStack(spacing: 1)
代码在if-else
块中重复。我试图为 的内容创建一个局部变量HStack
,但找不到为if
和成功编译的类型else
。有可能这样做吗?我正在使用 Xcode 11.5 和 Swift 5。
解决方案
推荐阅读
- c++ - 为什么不能为派生类指针分配基类的指针?
- django - 如何从 django 模型中获取属性的值
- python - 如何将 CSV 文件设置为只读以仅通过 Python UI 直接访问和编辑?
- java - 使用预先构建的字符串请求使用肥皂应用程序
- python - Pandas 如何针对以下场景进行 groupby
- javascript - addEventListener() 中的布尔“usecapture”参数和替代选项对象的“capture”属性有什么区别?
- php - PHP数组不在foreach循环之外打印
- c# - 给定两个数组(String[],Float[]),如何实现找到最大值的方法
- flutter - “字符串”类型不是“列表”类型的子类型
'函数结果' - avfoundation - 当我使用 AVAssetWriterInput 时,readyForMoreMediaData 的值始终为 NO,但为什么呢?