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 动态强调颜色

添加TabView会使导航栏不覆盖SwiftUI的安全区域

从核心数据中删除/添加到核心数据后,带有列表的 SwiftUI TabView 不刷新

PrimeNG - 如何在 p-tabView 组件中动态添加和删除 p-tabPanel

SwiftUI:我可以向 TabView 添加更多视图,然后是选项卡项吗?

添加 TabView 使导航栏无法覆盖 SwiftUI 中的安全区域