|
//
// GroupViewController.swift
// PaiAi
//
// Created by zhengjianfei on 16/4/4.
// Copyright © 2016年 FFIB. All rights reserved.
//
import UIKit
import RxSwift
import RxCocoa
import RxDataSources
import PaiaiDataKit
import PaiaiUIKit
final class GroupViewController: UIViewController {
// MARK: Storyboard property
@IBOutlet var tableView: UITableView!
// MARK: data property
fileprivate let disposeBag = DisposeBag()
var viewModel: GroupViewModel<GroupRepository>!
// MARK: view function
override func viewDidLoad() {
super.viewDidLoad()
configurationRx()
groupViewModel.reload()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(true)
titleWithbackBar = "我的照片群"
}
var dataSource: RxTableViewSectionedAnimatedDataSource<AnimatableSectionModel<Int, GroupItem>> {
return RxTableViewSectionedAnimatedDataSource<AnimatableSectionModel<Int, GroupItem>>(configureCell: { (dataSource, tableView, indexPath, item) in
let cell = tableView.dequeueReusableCell(withIdentifier: "groupCell", for: indexPath) as! GroupCell
cell.setInfo(item)
return cell
}, canEditRowAtIndexPath: { _, _ in true })
}
func configurationRx() {
viewModel.groupContents
.bind(to: tableView.rx.items(dataSource: dataSource))
.disposed(by: disposeBag)
tableView.rx.itemDeleted
.subscribe(onNext: { [unowned self] in self.viewModel.remove(of: $0)})
.disposed(by: disposeBag)
tableView.rx.modelSelected(GroupItem.self)
.subscribe(onNext: { [unowned self] in self.viewModel.didSelect($0) })
.disposed(by: disposeBag)
tableView.rx.willDisplayCell
.subscribe(onNext: { [unowned self] in self.preload(indexPath: $0.at)})
.disposed(by: disposeBag)
}
func preload(indexPath: IndexPath) {
guard indexPath.row = collectionView.numberOfItems(inSection: 0) else { return }
viewModel.preload()
}
}
|