当我尝试navigationBarTitleDisplayMode
在面向 watchOS 6 的项目中使用时,出现此错误:
“navigationBarTitleDisplayMode”仅在 watchOS 8.0 或更高版本的应用程序扩展中可用
如何在早期版本的 watchOS 中使用它?我知道它在那里不会有效果,因为样式不存在,我只是想规避错误。
您可以使用 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)