1

我有一个 PageStyle TabView,并且想要更新它之外的文本。我已经使用 onAppear 来获取页面更改事件,如果我向前滚动,一开始看起来不错,但是一旦我向后滚动,就会错过一些 onAppear。

这是这样做的正确方法吗。有可能这样做吗?

struct PageView: View {
    
    @State var title: String = "hello"
    
    var body: some View {
        
        VStack {
            Text(self.title)
            TabView {
                ForEach(0..<100) { i in
                    Text("\(i)").onAppear {
                        self.title = ("TITLE = \(i)")
                    }
                }
            }
            .tabViewStyle(PageTabViewStyle())
        }
    }
}
4

1 回答 1

1

您可以通过在项目上使用TabView(selection:tag修饰符来做到这一点Text,如下所示(使用 Xcode 12.1 / iOS 14.1 测试)

var body: some View {
    VStack {
        Text(self.title)
        TabView(selection: $title){           // << here !!
            ForEach(0..<100) { i in
                Text("\(i)")
                   .tag(String(i))            // << here !!
            }
        }
        .tabViewStyle(PageTabViewStyle())
    }
}
于 2020-11-27T10:34:41.710 回答