1

当我尝试navigationBarTitleDisplayMode在面向 watchOS 6 的项目中使用时,出现此错误:

“navigationBarTitleDisplayMode”仅在 watchOS 8.0 或更高版本的应用程序扩展中可用

如何在早期版本的 watchOS 中使用它?我知道它在那里不会有效果,因为样式不存在,我只是想规避错误。

4

1 回答 1

0

您可以使用 ViewBuilder 扩展来做到这一点:

extension View {
    @ViewBuilder
    func navBarTitleDisplayMode(_ mode: NavigationBarItem.TitleDisplayMode) -> some View {
        if #available(watchOSApplicationExtension 8.0, *) {
            self
                .navigationBarTitleDisplayMode(mode)
        } else {
            self
        }
    }
}

用法:

someView
    .navigationBarTitle("WatchFunk") // Using this for watchOS 6 compatibility.
                                     // Use navigationTitle when targeting
                                     // watchOS 7 and above.
    .navBarTitleDisplayMode(.inline)
于 2021-09-15T10:24:58.140 回答