if#可用SwiftUI低于iOS 14的问题

if#可用SwiftUI低于iOS 14的问题,swiftui,Swiftui,我正在使用Xcode 12.0的beta版来处理LazyVGrid,如果手机有iOS 14,则在scrollview中渲染该网格,否则仅将scrollview渲染为一列 当我在手机上的应用程序上启动此视图时(不使用iOS 14),打开此视图会导致我的应用程序崩溃。但是如果我注释掉“if#available”部分,只显示“else”语句中的内容,它就可以正常工作 iOS早期版本中的if#是否存在问题,或者我的语法是否不正确 var body: some View { Nav

我正在使用Xcode 12.0的beta版来处理LazyVGrid,如果手机有iOS 14,则在scrollview中渲染该网格,否则仅将scrollview渲染为一列

当我在手机上的应用程序上启动此视图时(不使用iOS 14),打开此视图会导致我的应用程序崩溃。但是如果我注释掉“if#available”部分,只显示“else”语句中的内容,它就可以正常工作

iOS早期版本中的if#是否存在问题,或者我的语法是否不正确

    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()
                            }
                        }
                    }
                }

尝试将
ScrollView
的内容包装到
组(或
VStack
)中,如


我试着把它放在一个小组里,但这似乎并没有解决它,但我不确定你的评论是什么意思,如果不是在身体层面的话?它包含在视图结构的主体中。这就是问题所在吗?
ScrollView(.vertical, showsIndicators: false) {
   Group {
      if #available(iOS 14.0, *) {
          // ... new content here
      } else {
          // ... old content here
      }
   }
}