我尝试在网络上搜索有关如何执行此操作的解决方案,更不用说来自其他开发人员的 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函数中,我相信我们需要实现代码以在到达最后一页时隐藏“下一步”按钮,但我不知道如何做到这一点。
当我到达最后一页时,我将实现什么代码来隐藏“下一步”按钮,并在不在最后一页时取消隐藏“下一步”按钮?
为了回答我自己的问题,我想出了以下内容。如果这对其他人有帮助,这让我很高兴:)。
我添加了一个 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 我添加到原始代码中的新代码。