【问题标题】:SwiftUI: Add Items dynamically to TabView [duplicate]SwiftUI:将项目动态添加到 TabView [重复]
【发布时间】: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 中的错误?

【问题讨论】:

标签: swift xcode swiftui tabview


【解决方案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),以便它完全重新加载。

【讨论】:

    猜你喜欢
    • 2021-03-27
    • 2021-06-20
    • 2022-12-19
    • 2019-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-31
    相关资源
    最近更新 更多