SwiftUI:将项目动态添加到 TabView [重复]
Posted
技术标签:
【中文标题】SwiftUI:将项目动态添加到 TabView [重复]【英文标题】:SwiftUI: Add Items dynamically to TabView [duplicate] 【发布时间】:2020-11-09 07:40:45 【问题描述】:我想使用 TabView 来显示一些数据。我为此使用了分页视图样式。
struct ContentView: View
@State var texts: [String] = ["first", "second"]
var body: some View
TabView
ForEach(texts, id: \.self) text in
VStack
Button(action:
texts.append("next one...")
, label:
Text("Button")
)
Text(text)
.tabViewStyle(PageTabViewStyle())
.indexViewStyle(PageIndexViewStyle(backgroundDisplayMode: .always))
正如预期的那样,视图会显示两个页面(“第一页”和“第二页”)。当我按下按钮时,会添加一个新的页面指示器(所以我在页面索引中看到三个点)但我无法滚动到第三页。
是我遗漏了什么,还是 Xcode 中的错误?
【问题讨论】:
旁注:如果我放弃 PageTabViewStyle 它似乎按预期工作 这是否回答了您的问题***.com/a/63500070/12299030? 绝对!谢谢! 【参考方案1】:正如 Asperi 已经指出的那样,TabView with "PageTabViewStyle" does not update it's content when @State var changes 中也出现了同样的行为
我还发现这篇文章引用了相同的答案:https://www.hackingwithswift.com/forums/swiftui/how-do-i-append-a-new-page-into-tabview-pagetabviewstyle/2583
解决方案是在 TabView 中添加一个 .id(id value),以便它完全重新加载。
【讨论】:
以上是关于SwiftUI:将项目动态添加到 TabView [重复]的主要内容,如果未能解决你的问题,请参考以下文章
从核心数据中删除/添加到核心数据后,带有列表的 SwiftUI TabView 不刷新
PrimeNG - 如何在 p-tabView 组件中动态添加和删除 p-tabPanel