如果到达最后一页则隐藏按钮

问题描述 投票:0回答:1

我尝试在网络上搜索有关如何执行此操作的解决方案,更不用说来自其他开发人员的 youtube,但似乎找不到我正在寻找的答案。

我正在尝试创建一个 ButtonView,其中页面底部有 2 个按钮:“下一个”和“上一个”。我遇到的问题是,如果用户到达循环中的最后一页,我希望能够隐藏“下一页”按钮,以便只有“上一页”按钮仅在最后一页上显示,并且两个按钮在任何时候都显示除最后一页以外的其他页。

下面是我的 ButtonsView 的代码:

import SwiftUI

struct ButtonsView: View {
    
    @Binding var selection: Int
    let buttons = ["Previous", "Next"]

    var body: some View {
        HStack {
            ForEach(buttons, id: \.self) { buttonLabel in
                Button(action: { buttonAction(buttonLabel) }, label: {
                    Text(buttonLabel)
                        .font(.system(size: 25))
                        .fontWeight(.heavy)
                        .padding()
                        .frame(width: 150, height: 44)
                        .background(Color.black.opacity(0.27))
                        .cornerRadius(12)
                        .padding(.horizontal)
                })
            }
        }
        .foregroundColor(.yellow)
        .padding()
    }

    func buttonAction(_ buttonLabel: String) {
        withAnimation {
            if buttonLabel == "Previous" && selection > 0 {
                selection -= 1
            } else if buttonLabel == "Next" && selection < pages.count - 1 {
                selection += 1
            } 
        }
    } 
}

在buttonAction函数中,我相信我们需要实现代码以在到达最后一页时隐藏“下一步”按钮,但我不知道如何做到这一点。

当我到达最后一页时,我将实现什么代码来隐藏“下一步”按钮,并在不在最后一页时取消隐藏“下一步”按钮?

button swiftui
1个回答
0
投票

为了回答我自己的问题,我想出了以下内容。如果这对其他人有帮助,这让我很高兴:)。

  • 我添加了一个 Int 类型的新变量

    totalPages
    i,它等于 'pages.count' -> 总页数

  • 我使用buttonLabel和showShowButton函数在按钮代码上方添加了一个if子句

    shouldShowButton

  • 基本上,如果我们到达最后一页,即pages.count(总页数),则选择< totalPages - 1, otherwise we show the button.

以下是更新后的代码:

import SwiftUI

struct ButtonsView: View {
    
    @Binding var selection: Int
    let buttons = ["Previous", "Next"]
    let totalPages: Int // NEWLY ADDED

    var body: some View {
        HStack {
            ForEach(buttons, id: \.self) { buttonLabel in
                // NEWLY ADDED:
                if shouldShowButton(buttonLabel: buttonLabel) { 

                    Button(action: { buttonAction(buttonLabel) }, label: {
                        Text(buttonLabel)
                            .font(.system(size: 25))
                            .fontWeight(.heavy)
                            .padding()
                            .frame(width: 150, height: 44)
                            .background(Color.black.opacity(0.27))
                            .cornerRadius(12)
                            .padding(.horizontal)
                    })
                } // NEWLY ADDED
            }
        }
        .foregroundColor(.yellow)
        .padding()
    }
    
    // NEWLY ADDED
    func shouldShowButton(buttonLabel: String) -> Bool {
        if buttonLabel == "Next" {
            return selection < totalPages - 1
        } else {
            return true
        }
    }

    func buttonAction(_ buttonLabel: String) {
        withAnimation {
            if buttonLabel == "Previous" && selection > 0 {
                selection -= 1
            } else if buttonLabel == "Next" && selection < pages.count - 1 {
                selection += 1
            }
        }
    } 
}

您将看到 // NEWLY ADDED 我添加到原始代码中的新代码。

© www.soinside.com 2019 - 2024. All rights reserved.