我正在Xcode 12测试版WatchOS 7上开发一个苹果手表应用程序。
我也打算支持watchOS6。
以下代码有错误,我不知道如何处理,它属于SwiftUI问题:
struct CompactStockListView: View {
var body: some View {
NavigationView {
List(getStocks(), id: .id) { stock in
CompactStockRowView(stock: stock)
.padding(.vertical, 6)
}
.navigationBarTitle(Text("Landmarks"))
}
}
}
Xcode注意到错误:
"NavigationView"仅在watchOS 7.0或更新版本的应用程序扩展中可用
下一步:尝试这种解决方案没有成功:
struct CompactStockListView: View {
var body: some View {
getListSafe() // Error
}
func getListSafe() -> View { // Error tooo
if #available(watchOSApplicationExtension 7.0, *) {
return NavigationView {
List(getStocks(), id: .id) { stock in
CompactStockRowView(stock: stock)
.padding(.vertical, 6)
}
.navigationBarTitle(Text("Landmarks"))
}
} else {
// Fallback on earlier versions
return List(getStocks(), id: .id) { stock in
CompactStockRowView(stock: stock)
.padding(.vertical, 6)
}
}
}
}
尝试以下
@ViewBuilder
func getListSafe() -> some View {
if #available(watchOSApplicationExtension 7.0, *) {
NavigationView {
List(getStocks(), id: .id) { stock in
CompactStockRowView(stock: stock)
.padding(.vertical, 6)
}
.navigationBarTitle(Text("Landmarks"))
}
} else {
// Fallback on earlier versions
List(getStocks(), id: .id) { stock in
CompactStockRowView(stock: stock)
.padding(.vertical, 6)
}
}
}