如何解决#available SwiftUI小于iOS 14的问题
我正在使用Xcode 12.0的Beta版与LazyVGrid一起使用,如果手机具有iOS 14,则可以在滚动视图中呈现此网格,否则仅将ScrollView呈现为一列。
当我在手机上的应用程序(不使用iOS 14)上启动此应用程序时,打开此视图会导致我的应用程序崩溃。但是,如果我注释掉“ if #available”部分,并仅显示“ else”语句中的内容,那么它将正常工作。
#在较早版本的iOS中可用吗?还是我的语法不正确?
var body: some View {
NavigationView {
VStack {
//Empty View navigation link to choose the selected pack in User Defaults.
ScrollView(.vertical,showsIndicators: false) {
//Checks if iOS version 14.0 is available to render the lazy grid view
if #available(iOS 14.0,*) {
LazyVGrid(columns: [GridItem(.flexible()),GridItem(.flexible())],spacing: 15) {
//checks if the pack is in the purchased list - if so,renders it as an unlocked tile.
ForEach((allPacks),id: \.self) { pack in
UnlockedPackTile(tilePack: pack)
.onTapGesture {
print("Originally tapped \(pack.name)")
self.userInformation.defaultPack = pack
self.isPresented.toggle()
}
}
}
} else {
//does this as a simple stack instead if iOS 14 is not available.
ForEach((allPacks),id: \.self) { pack in
UnlockedPackTile(tilePack: pack)
.onTapGesture {
print("Originally tapped \(pack.name)")
self.userInformation.defaultPack = pack
self.isPresented.toggle()
}
}
}
}
解决方法
尝试像这样将navigationBarItems
的内容包装到ScrollView
(或Group
)中
VStack
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。