swiftUI tabView pagetabviewstyle - 下一步按钮不起作用

swiftUI tabView pagetabviewstyle - button to next is not working

import SwiftUI

GuideImageView currentPage 表示 1VStack,它位于 guidelists

数组中的文本和图像中
struct GuideImageView: View {
@State var currentPage: Int = 0
var body: some View {
VStack{
    TabView(selection: $currentPage){
        ForEach(guidelists){i in
            VStack{
                Text(i.explain)
                Image(i.image)
                    .resizable()
            }
        }
    }.tabViewStyle(PageTabViewStyle(indexDisplayMode: .never))  //page처럼 구현 + ...을 안보이게함
    
    Button("Next") {
if currentPage == 3 {
                currentPage = 0
                //return
            }else{
                currentPage += 1
            }            
    }
}
}
}

结构指南列表

struct GuideList: Identifiable, Hashable{//가이드리스트 구조체, 이미지와 설명넣기
let id = UUID() //UUID = 고유식별자
let image: String
let explain: String
}

让指南列表

let guidelists = [
GuideList(image: "image1",explain: "explain1." ),
GuideList(image: "image2",explain: "explain2." ),
GuideList(image: "image3",explain: "explain3." )
]

GuideImageView_Previews

struct ImageView_Previews: PreviewProvider {
static var previews: some View {
GuideImageView()
}
}

我想做一个按钮去下一页 按钮似乎不起作用

这不起作用的原因是模型 ID 和选择变量中的 类型不匹配


详情:

TabView(selection: $currentPage){
            ForEach(guidelists){i in

这两行告诉编译器每个元素的id都是UUID类型(因为GuideList是可识别的,而idUUID类型。那就是本身很好,但是 TabView 有一个 Int 类型的选择变量(currentPage 是一个 Int)所以它不起作用。因此将两种类型中的一种更改为等于另一种将解决问题。


简单示例:

将您的代码更改为:

struct GuideList: Identifiable, Hashable{//가이드리스트 구조체, 이미지와 설명넣기
    let id: Int
    let image: String
    let explain: String
}

let guidelists = [
    GuideList(id: 0, image: "image1",explain: "explain1."),
    GuideList(id: 1, image: "image2",explain: "explain2." ),
    GuideList(id: 2, image: "image3",explain: "explain3." )
]