Advertisement

SwiftUI 中级之基于ObservableObject传递数据到每个视图

阅读量:

神奇到ObservableObject可以现实所以组件的数据一致性,而且可以实现自动更新

代码

复制代码
 import SwiftUI

    
  
    
 class PageModel:ObservableObject {
    
     @Published var items:[String] = ["a","b","c"]
    
     @Published var activeFlag:Int = 0 {
    
     didSet{
    
         items.append("\(self.activeFlag)")
    
     }
    
     }
    
     func fetch(){
    
     items.append("\(self.activeFlag)")
    
     }
    
 }
    
  
    
 struct ContentView: View {
    
    // @State var activeFlag:Int = 0
    
    // @State var items:[String] = ["a","b","c"]
    
     @ObservedObject var fetcher = PageModel()
    
    // @State var activeFlag:Int = fetcher.activeFlag
    
     var body: some View {
    
     VStack{
    
         Button(action:{
    
             print("hello")
    
             self.fetcher.activeFlag = self.fetcher.activeFlag + 1
    
             //self.fetcher.fetch()
    
         }){
    
             Text("数据源")
    
         }
    
         DemoList(fetcher: self.fetcher)
    
       
    
     }
    
    
    
     }
    
 }
    
  
    
 struct DemoList: View {
    
     @ObservedObject var fetcher:PageModel
    
       var body: some View {
    
     VStack {
    
                          List {
    
                             ForEach(fetcher.items,id:\.self) { item in
    
                                  Text(item)
    
                              }
    
                          }
    
                      }
    
     }
    
 }
    
    
    
    
    代码解读

更多SwiftUI教程和代码关注专栏

QQ:3365059189
SwiftUI技术交流QQ群:518696470

全部评论 (0)

还没有任何评论哟~