swift - 不同类型对象数组的 SwiftUI 抽象视图
问题描述
我想列出两种类型的对象(MotorBikeRow 和 WithFootBikeRow 将是此列表的这两个略有不同的行视图)
我来自 Java,自然会创建一个名为 Bike 的抽象类。这样我就有了两种(当然更多)类型的对象的列表:
@Binding var bikeList:[Bike]
但问题是如何在 Swift 中做这个“抽象类”?我目前正在使用一个名为 Bike 的协议,这两个结构 MotorBike 和 WithFootBike 符合。
List {
ForEach(...) i in {
if bikeList[i] is MotorBike {
MotorBikeRow(motorBike: $bikeList[i]) << error
} else {
WithFootBikeRow(withFootBike: $bikeList[i]) << error
}
}
}
但是,如果这两个视图要求绑定,我们会立即看到进一步的问题。
@Binding var motorBike:MotorBike
@Binding var withFootBike:WithFootBike
所以这个问题
如何将绑定从 Bike 投射到 MorotBike/WithFootBike?当然,我确实使用了这个“技巧”:我如何在 Swift 中投射 @Binding但存在内存泄漏!
这是正确的 SwiftUI/Swift 方法吗?也许我完全错了并且受“Java”的影响太大以至于我没有看到更优雅的解决方案?
解决方案
推荐阅读
- android-studio - Webview问题,pdf链接打不开,请帮忙
- python - 如何在python中返回时始终强制调用类方法
- python - 无法使用 Pandas 删除 NaN 值
- python-3.x - 在我的 python 3.6.6 中安装 opencv 时出错
- python - 我已经安装了 pygame。pycharm给了我未安装的pygame
- android - 将 MainActivity 定义为静态变量以访问 findViewById 方法
- sql - 删除前两个字符后的零
- python-3.x - 如何返回类变量中的所有值?
- ios - 在可编辑的 UITextView 中禁用换行
- sql-server - 至少查询且不存在于 SQL 表中