Skip to content

Commit

Permalink
Merge branch 'release/0.9.6'
Browse files Browse the repository at this point in the history
  • Loading branch information
adellibovi committed Feb 8, 2017
2 parents 68d3897 + 2507855 commit e7aae6c
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 19 deletions.
2 changes: 1 addition & 1 deletion TableViewKit.podspec
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = "TableViewKit"
s.version = "0.9.5"
s.version = "0.9.6"
s.summary = "Empowering UITableView with painless multi-type cell support and build-in automatic state transition animations"
s.homepage = "http://github.com/odigeoteam/TableViewKit/"
s.license = "MIT"
Expand Down
8 changes: 6 additions & 2 deletions TableViewKit/Section.swift
Original file line number Diff line number Diff line change
Expand Up @@ -83,10 +83,14 @@ extension Section {

guard let sectionIndex = index(in: manager) else { return }
let tableView = manager.tableView


if case .inserts(let array) = changes {
array.forEach { manager.register(items[$0].drawer.type) }
}

switch changes {
case .inserts(let array):
let indexPaths = array.map { IndexPath(item: $0, section: sectionIndex) }
let indexPaths = array.map { IndexPath(item: $0, section: sectionIndex) }
tableView.insertRows(at: indexPaths, with: manager.animation)
case .deletes(let array):
let indexPaths = array.map { IndexPath(item: $0, section: sectionIndex) }
Expand Down
32 changes: 16 additions & 16 deletions TableViewKit/TableViewManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -158,18 +158,18 @@ extension TableViewManager {
extension TableViewManager: UITableViewDataSource {

/// Implementation of UITableViewDataSource
public func numberOfSections(in tableView: UITableView) -> Int {
open func numberOfSections(in tableView: UITableView) -> Int {
return sections.count
}

/// Implementation of UITableViewDataSource
public func tableView(_ tableView: UITableView, numberOfRowsInSection sectionIndex: Int) -> Int {
open func tableView(_ tableView: UITableView, numberOfRowsInSection sectionIndex: Int) -> Int {
let section = sections[sectionIndex]
return section.items.count
}

/// Implementation of UITableViewDataSource
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
open func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let currentItem = item(at: indexPath)
let drawer = currentItem.drawer

Expand All @@ -180,71 +180,71 @@ extension TableViewManager: UITableViewDataSource {
}

/// Implementation of UITableViewDataSource
public func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
open func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return title(for: {$0.header}, inSection: section)
}

/// Implementation of UITableViewDataSource
public func tableView(_ tableView: UITableView, titleForFooterInSection section: Int) -> String? {
open func tableView(_ tableView: UITableView, titleForFooterInSection section: Int) -> String? {
return title(for: {$0.footer}, inSection: section)
}

/// Implementation of UITableViewDataSource
public func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
open func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
// Intentionally blank. Required to use UITableViewRowActions
}
}

extension TableViewManager: UITableViewDelegate {

/// Implementation of UITableViewDelegate
public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
open func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
guard let currentItem = item(at: indexPath) as? Selectable else { return }
currentItem.didSelect()
}

/// Implementation of UITableViewDelegate
public func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
open func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return height(at: indexPath) ?? tableView.rowHeight
}

/// Implementation of UITableViewDelegate
public func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
open func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return height(for: {$0.header}, inSection: section) ?? tableView.sectionHeaderHeight
}

/// Implementation of UITableViewDelegate
public func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
open func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return height(for: {$0.footer}, inSection: section) ?? tableView.sectionFooterHeight
}

/// Implementation of UITableViewDelegate
public func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
open func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
return estimatedHeight(at: indexPath) ?? tableView.estimatedRowHeight
}

/// Implementation of UITableViewDelegate
public func tableView(_ tableView: UITableView, estimatedHeightForHeaderInSection section: Int) -> CGFloat {
open func tableView(_ tableView: UITableView, estimatedHeightForHeaderInSection section: Int) -> CGFloat {
return estimatedHeight(for: {$0.header}, inSection: section) ?? tableView.estimatedSectionHeaderHeight
}

/// Implementation of UITableViewDelegate
public func tableView(_ tableView: UITableView, estimatedHeightForFooterInSection section: Int) -> CGFloat {
open func tableView(_ tableView: UITableView, estimatedHeightForFooterInSection section: Int) -> CGFloat {
return estimatedHeight(for: {$0.footer}, inSection: section) ?? tableView.estimatedSectionHeaderHeight
}

/// Implementation of UITableViewDelegate
public func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
open func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
return view(for: {$0.header}, inSection: section)
}

/// Implementation of UITableViewDelegate
public func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
open func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
return view(for: {$0.footer}, inSection: section)
}

/// Implementation of UITableViewDelegate
public func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
open func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
guard let item = item(at: indexPath) as? Editable else { return nil }
return item.actions
}
Expand Down
28 changes: 28 additions & 0 deletions TableViewKitTests/TableViewDataSourceTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,19 @@ class TestCell: UITableViewCell, ItemCompatible {
internal var item: Item?
}

class DifferentItem: Item {

var drawer: CellDrawer.Type = DifferentDrawer.self
}

class DifferentDrawer: CellDrawer {

static var type: CellType = CellType.class(DifferentCell.self)
static func draw(_ cell: UITableViewCell, with item: Any) {}
}

class DifferentCell: UITableViewCell { }

class TableViewDataSourceTests: XCTestCase {

fileprivate var tableViewManager: TableViewManager!
Expand All @@ -74,6 +87,21 @@ class TableViewDataSourceTests: XCTestCase {
expect(cell).to(beAnInstanceOf(TestCell.self))
}

func testDequeueCellAfterRegisterSection() {

guard let section = tableViewManager.sections.first else {
fatalError("Couldn't get the first section")
}

let otherItem = DifferentItem()
section.items.append(otherItem)

let indexPath = otherItem.indexPath(in: tableViewManager)!
let cell = otherItem.drawer.cell(in: tableViewManager, with: otherItem, for: indexPath)

XCTAssertTrue(cell is DifferentCell)
}

func testNumberOfSections() {
let count = self.tableViewManager.numberOfSections(in: self.tableViewManager.tableView)
expect(count).to(equal(2))
Expand Down

0 comments on commit e7aae6c

Please sign in to comment.