微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SwiftUI:Multiplatform应用程序swiftui平台意外状况

如何解决SwiftUI:Multiplatform应用程序swiftui平台意外状况

我正在尝试在Multiplatform实现中实现列表,这是我的实现:

struct ContentView: View {
    var body: some View {
        List {
            Section(header: Text("Header"),footer: Text("Footer")){
                ForEach(0..<5){
                    Text("\($0)")
                        .tag($0)
                }
            }
            #if os(iOS)
                .listStyle(GroupedListStyle())
            #endif
        }
    }
}

但是在这一行:

.listStyle(GroupedListStyle())

我收到此错误

Unexpected platform condition (expected `os`,`arch`,or `swift`)

任何人都知道解决错误方法吗?

非常感谢您的帮助

解决方法

SwiftUI不太喜欢条件编译代码。

尝试这样的事情:

#if os(macOS)
typealias MyListStyle = PlainListStyle
#else
typealias MyListStyle = GroupedListStyle
#endif
...
SomeView {}
.listStyle(MyListStyle())

func myListStyle() -> some View {
    #if os(macOS)
    return listStyle(PlainListStyle())
    #else
    return listStyle(GroupedListStyle())
    #endif
}
...
SomeView {}
.myListStyle()

对于不合适的修饰符,您还可以使用func的变体和返回的self。我还用它来使.environment有条件。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。