当我在 TabView 上快速滑动时如何更改变量
Posted
技术标签:
【中文标题】当我在 TabView 上快速滑动时如何更改变量【英文标题】:How to change variable when I slide on TabView in swift 【发布时间】:2021-03-01 07:38:47 【问题描述】:我的 TabView 有以下代码:
struct CardList: View
var body: some View
TabView
ForEach (0..<100 ) item in
CardViewNew()
.tabViewStyle(PageTabViewStyle())
.padding(.vertical, 10)
每次当我滑动到 TabView 的下一个视图时,以下变量“i”应该增加 1 以显示我的数组“shuffled_questions”的下一个元素。
struct CardViewNew: View
var body: some View
Text(shuffled_questions[i])
如果有人可以帮助我就好了:)
【问题讨论】:
“我”在哪里声明? 【参考方案1】:似乎有两种方法可以做到这一点。要回答您最初的问题,您可以使用TabView
的selection
绑定来获取一个变量,以便在 TabView 移动时更改:
@State private var tabSelection = 0
var body: some View
TabView(selection: $tabSelection)
ForEach (0..<100 ) item in
Text("hi")
.tabViewStyle(PageTabViewStyle())
.padding(.vertical, 10)
Text("\(tabSelection)")
但是,在您的情况下,您似乎只想将索引从您的ForEach
作为参数传递给您的CardViewNew
:
struct ContentView : View
var body: some View
TabView
ForEach (0..<100 ) item in
CardViewNew(index: item)
.tabViewStyle(PageTabViewStyle())
.padding(.vertical, 10)
struct CardViewNew: View
var index: Int
var body: some View
Text(shuffled_questions[index])
【讨论】:
您必须编辑您的CardViewNew
,使其看起来像我在其中包含的var index: Int
行
这个错误现在消失了。但在我的 CardViewNew-Preview 中还有一个:“在调用中缺少参数 'index' 的参数”struct CardViewNew_Previews: PreviewProvider static var previews: some View CardViewNew()
这告诉你,在你的预览中,你还必须定义一个索引。因此,将其更改为 CardViewNew(index: 0)
以进行预览。顺便说一句,如果您将鼠标悬停在该错误上,Xcode 甚至可能会主动为您修复它。以上是关于当我在 TabView 上快速滑动时如何更改变量的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI 滑动 TabView 时如何访问 ScrollViewReader 的代理
使用tabview更改选项卡时如何使SwiftUI中的计时器保持触发
SwiftUI - 如何在修改来自同一结构的状态变量时避免刷新列表