【发布时间】:2021-04-13 01:17:03
【问题描述】:
我很想在 iOS 和 WatchOS 之间重用列表布局,但 InsetGroupedListStyle() 在 WatchOS 上不可用。
在 iOS 上创建一个有条件地返回 InsetGroupedListStyle() 的助手是一个好方法,例如。 PlainListStyle() 在 WatchOS 上?
我试过了,但得到一个错误,我无法返回 ListStyle(这可能是由于 SwiftUI 需要在编译时知道特定类型)。
查看.swift
List {
// ...
}
.listStyle(MyInsetGroupedListStyle())
Helpers.swift
public func MyInsetGroupedListStyle() -> ListStyle {
#if os(watchOS)
return PlainListStyle()
#else
return InsetGroupedListStyle()
#endif
}
另一种方法是指定 listStyle 内联,但 swift 不支持表达式中的条件编译:
查看.swift
List {
// ...
}
.listStyle(#if os(watchOS) PlainListStyle() #else InsetGroupedListStyle() #endif)
【问题讨论】:
-
我刚才问了几乎完全相同的问题!你需要返回一个不透明的类型:stackoverflow.com/a/64635065/14351818
标签: swiftui swiftui-list