SwiftUI:将项目动态添加到TabView

时间:2020-11-09 07:40:45

标签: swift xcode swiftui tabview

我想使用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中的错误?

1 个答案:

答案 0 :(得分:0)

因此,正如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值),以便完全重新加载。