2016-09-20 69 views
1

DocumentationRxDataSources我無法使它的工作。沒有動畫的項目中刪除UICollectionView與RxDataSources

當我點擊CollectionViews的一個元素時,它被刪除,因爲我的代碼顯示,但是在視圖上沒有任何反應,儘管我的sections[0].items上沒有元素。我認爲我做了一些錯誤的綁定數據源與視圖,但我無法弄清楚。

let dataSource = RxCollectionViewSectionedAnimatedDataSource<SectionOfCategoryMO>() 
    private var e1cat = CatMngr.SI.getAlphabeticallyOrderedCategories(type: .e1) 

    dataSource.configureCell = { ds, tv, ip, item in 
     let cell = tv.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: ip) as! CategoryCollectionViewCell 
     cell.categoryName.text = item.identity.string 
     cell.categoryName.numberOfLines = 0 
     cell.categoryCircle.makeCircle() 
     cell.categoryCircle.backgroundColor = self.categoryColors[ip.row] 

     return cell 
    } 

    dataSource.animationConfiguration = AnimationConfiguration(insertAnimation: .Fade, reloadAnimation: .Fade, deleteAnimation: .Automatic) 

    var sections = [SectionOfCategoryMO(header: "a", items: e1cat)] 

    Observable.just(sections) 
     .bindTo(myCollection.rx_itemsWithDataSource(dataSource)) 
     .addDisposableTo(disposeBag) 

    myCollection.rx_itemSelected.subscribeNext{ 
     sections[0].items.removeAtIndex($0.row) 
    }.addDisposableTo(disposeBag) 

該視圖加載完全與所有初始類別,但是當我刪除其中的一個視圖不會刷新。

任何人都知道發生了什麼?

在此先感謝。

回答

1

這是因爲你的sectionsArray就是這樣一個ArrayObservable.just(sections)不會因您在rx_itemSelected訂閱中修改sections而不發送其他元素。您需要將數據源綁定到Observable,當事情發生變化時,它實際上會發送新的元素。

喜歡的東西:

let initialData = [SectionOfCategoryMO(header: "a", items: e1cat)] 
let data = Variable<SectionOfCategoryMO>(initialData) 
data.asObservable() 
    .bindTo(myCollection.rx_itemsWithDataSource(dataSource)) 
    .addDisposableTo(disposeBag) 

myCollection.rx_itemSelected.subscribeNext { 
    let d = data.value 
    d[0].items.removeAtIndex($0.row) 
    data.value = d 
}.addDisposableTo(disposeBag) 

但是,我無論如何都會推薦一個更強大的解決方案。 Use this example.

+0

你是對的,我沒有意識到我的'部分'不是一個可觀察的...謝謝你的快速回答! – kikettas

相關問題