在 ScrollView 上分页不会 work/appear
Paging on ScrollView does not work/appear
我使用 SwiftUI,我希望有一个垂直的 Scrollview 来显示一些项目(事件)。
这些项目包含由照片表示的子项目(参与者)。
我想在 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)
}
}
}
嵌入到 ScrollView -> 不起作用
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有什么需要注意的地方吗?我必须预加载一些东西吗?一定要专门嵌入吗?
还是分页,我实现的方式不对?
如果您需要更多使用过的代码,请告诉我。
顺便说一句。 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)
}
}
我使用 SwiftUI,我希望有一个垂直的 Scrollview 来显示一些项目(事件)。 这些项目包含由照片表示的子项目(参与者)。 我想在 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) } } }
嵌入到 ScrollView -> 不起作用
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有什么需要注意的地方吗?我必须预加载一些东西吗?一定要专门嵌入吗? 还是分页,我实现的方式不对?
如果您需要更多使用过的代码,请告诉我。
顺便说一句。 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)
}
}