Sapporoとは
Sapporoとは,iOSのUICollectionViewをCellmodel-drivenで扱うためのマネージャー
環境
- OSX El Captan
- Xcode 7.3
- iOS 8.0
- Swift 2.2
- Sapporo 1.1
ViewControllerの実装
ViewController.swift
import UIKit
import Sapporo
class ViewController: UIViewController {
    
    @IBOutlet var collectionView: UICollectionView!
    lazy var sapporo: Sapporo = { [unowned self] in
        return Sapporo(collectionView: self.collectionView)
        }()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // 以下のように,repeatedValue にクラスを渡すと実体は1つのため状態が共有されてしまうので,実際に使うときは注意
        let cellmodels: [MyCellModel] = Array(count: 4,  repeatedValue: MyCellModel())
        
        let section = SASection()
        section.inset = UIEdgeInsets(top: 30, left: 10, bottom: 10, right: 10)
        section.minimumLineSpacing = 10
        
        sapporo
            .registerCellByNib(MyCell)
            .setLayout(SAFlowLayout())
        
        sapporo
            .reset(section)
            .bump()
        
        section
            .reset(cellmodels)
            .bump()
    }
}
CellとCellModelの実装
MyCell.swift
import UIKit
import Sapporo
class MyCellModel: SACellModel {
    init(){
        let size = CGSize(width: 100, height: 100)
        super.init(cellType: MyCell.self, size: size, selectionHandler: nil)
    }
}
class MyCell: SACell, SACellType {
    typealias CellModel = MyCellModel
    
    override func configure() {
        super.configure()
        
    }
}
セルの操作
- 
追加 section .append(cellmodel) .bump() sapporo[1] .append(cellmodel) .bump()
- 
挿入 section .insert(cellmodel) .bump() section .insertBeforeLast(cellmodels) .bump()
- 
リセット section .reset(cellmodels) .bump() section .reset() .bump()
- 
移動 section .move(fromIndex: 5, toIndex: 1) .bump()
- 
削除 section .remove(1) .bump() section .remove(cellmodel) .bump() section .remove(2...5) .bump() section .removeLast() .bump()
- 
更新 let cellmodel = section[1] cellmodel.property = newData cellmodel.bump()
セクションの操作
- 
挿入 sapporo .insert(section, atIndex: 1) .bump()
- 
移動 sapporo .move(fromIndex: 1, toIndex: 5) .bump()