测试已测试 | ✗ |
语言语言 | SwiftSwift |
许可 | MIT |
发布最新发布 | 2018年1月 |
SwiftSwift 版本 | 3.0 |
SPM支持 SPM | ✗ |
由 Yucel Uzun 维护。
YUTableView 为 UITableView 添加了可扩展子菜单支持。
您可以直接将 YUTableView 文件夹从示例拖到您的项目中。
对于您的所有行,您必须创建一个 YUTableViewNode。
data
: 这就是您存储单元格自定义数据的地方。cellIdentifier
: 单元格的标识符。如果您不设置 cellIdentifier,则将使用 YUTableView 的默认标识符(这是一个属性)。// Initializing node with data.
let node = YUTableViewNode (data: "Label")
// Initializing node with data and cell identifier.
let node2 = YUTableViewNode (data: "Label", cellIdentifier: "Cell")
// Initializing node with children and data
YUTableViewNode (childNodes: [node, node2], data: "Parent")
您的视图控制器应实现 "YUTableViewDelegate",并且您应调用 "setDelegate" 方法来设置您的代理。
func setTableProperties () {
tableView.setDelegate(self);
// Other stuf...
}
func didSelectNode(_ node: YUTableViewNode, indexPath: NSIndexPath) {
// Do something with node or indexPath...
}
"YUTableViewDelegate" 有 "heightForIndexPath:" 和 "heightForNode:" 方法来提供不同的单元格高度。
func heightForNode(_ node: YUTableViewNode) -> CGFloat? {
if node.cellIdentifier == "ComplexCell" {
return 100.0;
}
return nil;
}
func heightForIndexPath (_ indexPath: NSIndexPath) -> CGFloat? {
if indexPath.row == 5 {
return 100.0;
}
return nil;
}
YUTableView 首先检查 "heightForNode:",如果它返回 nil(或未实现),则检查 "heightForIndexPath:"。如果两者都返回 nil(或未实现),则使用默认行高。
let tableView : YUTableView
//...
// Changes the animation of inserting cells.
tableView.insertRowAnimation = .Top;
// Changes the animation of deleting cells.
tableView.deleteRowAnimation = .Fade;
要选择行,可以使用 "selectNodeAtIndex:" 或 "selectNode:" 方法之一。
let tableView : YUTableView
//...
let someRandomNode = getRandomNode ();
//...
tableView.selectNode (someRandomNode);
//...
tableView.selectNodeAtIndex(4);
您可以为动画完成设置一个要执行的方块。
let tableView : YUTableView
//...
tableView.animationCompetitionHandler = {
print("Animation ended");
}
要编辑单元格,必须实现 YUTableViewDelegate 的 “setContentsOfCell:node:” 方法。
func setContentsOfCell(_ cell: UITableViewCell, node: YUTableViewNode) {
if let customCell = cell as? CustomTableViewCell, let cellDic = node.data as? [String:String] {
customCell.setLabel(cellDic["label"]!, andImage: cellDic["img"]!);
} else {
cell.textLabel!.text = node.data as? String;
}
}
如果您从 xib 加载单元格,别忘了将 nib 注册到表格视图中。
let tableView : YUTableView
//...
tableView.registerNib(UINib(nibName: "NibName", bundle: nil), forCellReuseIdentifier: "Identifier");