Shoyu 1.0.0

Shoyu 1.0.0

测试测试
语言语言 SwiftSwift
许可 MIT
发布上次发布2016年9月
SPM支持 SPM

yukiasai 维护。



Shoyu 1.0.0

  • 作者
  • yukiasai

Shoyu

Shoyu 是一个用 Swift 编写的库,用于表示 UITableView 数据结构。

Shoyu 在日语中意为酱油。

用法

创建单个分区和行

使用 createSectioncreateRow

tableView.source = Source() { source in

    // Create section
    source.createSection { section in

        // Create row
        section.createRow { row in

            // Setting reuse identifier
            row.reuseIdentifier = "Cell"

            // Setting fixed height.
            row.height = 52

            // Configuring handler for cell.
            row.configureCell = { cell, _ in
                cell.textLabel?.text = "row 1"
            }
        }
    }
}

如果 Storyboard 中指定的 ClassNameReuseIdentifier 相同,则无需指定 reuseIdentifier。

创建与数组相对应的行

使用 createRows

let members = [
    Member(firstName: "John", lastName: "Paterson"),
    Member(firstName: "Matt", lastName: "Gray"),
    Member(firstName: "Jennifer", lastName: "Hart"),
    Member(firstName: "Katherine", lastName: "Nash"),
    Member(firstName: "Diane", lastName: "Nash"),
]

tableView.source = Source() { source in
    source.createSection { section in
        section.createRows(members) { member, row in
            row.height = 52
            row.configureCell = { cell, _ in
                cell.textLabel?.text = member.fullName
            }
        }
    }
}

创建分区头和分区脚注

使用 createHeadercreateFooter

tableView.source = Source() { source in
   source.createSection { section in

        // Create header.
        section.createHeader { header in
            // Setting title.
            header.title = "Header"

            header.height = 22
            header.configureView = { view, _ in
                view.backgroundColor = UIColor.lightGrayColor()
            }
        }

        // Create footer.
        section.createFooter { footer in
          ...
        }
    }
}

泛型

SectionRow 与泛型兼容。

分区

public class Section<HeaderType: UIView, FooterType: UIView>: SectionType {
  ...
}

public class Row<CellType: UITableViewCell>: RowType {
  ...
}

configureCell 的参数中的 cell 是泛型中指定的类型。分区头和分区脚注也是类似的。

// Create generic row.
section.createRows(members) { (member, row: Row<MemberTableViewCell>) in
    row.configureCell = { cell, _ in
        // cell type is MemberTableViewCell.
        cell.nameLabel.text = member.fullName
    }
}

行代理

Row 有一些代理方法。

section.createRow { row in

    // Configuring handler for height.
    row.heightFor = { _ -> CGFloat? in
        return 52
    }

    // Configuring handler for cell.
    row.configureCell = { cell, _ in
        cell.textLabel?.text = "row"
    }

    // Event handler for when cell is selected.
    row.didSelect = { _ in
        print("row is selected.")
    }
}

支持的代理方法

  • configureCell
  • heightFor
  • canRemove
  • canMove
  • canMoveTo
  • didSelect
  • didDeselect
  • willDisplayCell
  • didEndDisplayCell
  • willRemove
  • didRemove

许可

Shoyu 在 MIT 许可下发布。有关详细信息,请参阅 LICENSE。