Swift ScrollView上的分页不工作/显示

Swift ScrollView上的分页不工作/显示,swift,swiftui,scrollview,paging,Swift,Swiftui,Scrollview,Paging,我使用SwiftUI,我希望有一个垂直滚动视图来显示许多项目(事件)。 这些项目包含由照片表示的子项目(参与者)。 我想在2x2矩阵中显示4张照片。如果参与者超过4人,我想向左滑动以显示接下来的4张照片。(请参阅随附的屏幕截图) 为了实现这一点,我使用UIViewRepresentable或UIViewControllerRepresentable实现了分页(PageView、PageViewController和PageControl)。(我也试过TabView) 我在ScrollView

我使用SwiftUI,我希望有一个垂直滚动视图来显示许多项目(事件)。 这些项目包含由照片表示的子项目(参与者)。 我想在2x2矩阵中显示4张照片。如果参与者超过4人,我想向左滑动以显示接下来的4张照片。(请参阅随附的屏幕截图)

为了实现这一点,我使用UIViewRepresentable或UIViewControllerRepresentable实现了分页(PageView、PageViewController和PageControl)。(我也试过TabView)

我在ScrollView上使用此分页时遇到问题,分页元素不可用,它不显示。 它在VStack或列表中运行良好,但这无助于我在滚动视图中使用它


非常简单的示例:

  • 嵌入到VStack->WORKS中

    import SwiftUI
    
    struct TestView2: View {
        @State var currentPage = 0
    
        var body: some View {
            VStack() {
                Text("Below the Paging")
    
                PageView([
                    TestView(),
                    TestView()
                ], currentPage: $currentPage)
            }
        }
    }
    
  • 嵌入到滚动视图->中不起作用

    import SwiftUI
    
    struct TestView2: View {
        @State var currentPage = 0
    
        var body: some View {
            ScrollView() {
                // It also does not work if I add a VStack() into the ScrollView.
                // VStack(){ 
                Text("Below the Paging")
    
                PageView([
                    TestView(),
                    TestView()
                ], currentPage: $currentPage)
                // }
            }
        }
    }
    

  • 在ScrollView的情况下,我需要注意什么吗?我必须预装东西吗。它必须特别嵌入吗? 还是我实现分页的方式是错误的

    如果你需要更多的代码,请告诉我


    顺便说一句,滚动视图快把我逼疯了。除了这个问题,我还有一个问题,就是只要我没有滚动,按钮在某些地方就不能工作。

    这看起来像是一个bug,但在14.3中解决了

    struct NestedPageController: View {
        @State var currentPage = 0
        @State var currentPage2 = 0
        
        var body: some View {
            ScrollView() {
                VStack{
                    Text("Below the Paging")
                    
                    TabView(selection: $currentPage){
                        TestView2(tag: 1).tag(1)
                        TestView2(tag: 2).tag(2)
                        TestView2(tag: 3).tag(3)
                        TestView2(tag: 4).tag(4)
                    }
                    .tabViewStyle(PageTabViewStyle(indexDisplayMode: .never))
                    TabView(selection: $currentPage2){
                        TestView2(tag: 10).tag(10)
                        TestView2(tag: 20).tag(20)
                        TestView2(tag: 30).tag(30)
                        TestView2(tag: 40).tag(40)
                    }
                    .tabViewStyle(PageTabViewStyle(indexDisplayMode: .never))
                    
                }
            }
        }
    }
    
    struct TestView2: View {
        var tag: Int
        var body: some View {
            VStack{
                Text(tag.description)
                Image(systemName: "checkmark")
            }.frame(width: 200, height: 200, alignment: .center).background(Color.green)
        }
    }
    

    您可以尝试collectionView,它更简单、更灵活。在更新到14.3版本后,它可以正常工作!!!你介意接受这个答案吗?