YUTableView-Swift 1.0.6

YUTableView-Swift 1.0.6

测试已测试
语言语言 SwiftSwift
许可 MIT
发布最新发布2018年1月
SwiftSwift 版本3.0
SPM支持 SPM

Yucel Uzun 维护。



  • 作者
  • yücel

YUTableView 为 UITableView 添加了可扩展子菜单支持。

安装

手动

您可以直接将 YUTableView 文件夹从示例拖到您的项目中。

要求

  • Swift 3
  • 不与 Objective-C 兼容。对于 Objective-C,请检查 这个版本。

用法

数据模型

对于您的所有行,您必须创建一个 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")

表格

YUTableView 的用法

当用户选中单元格时收到通知

您的视图控制器应实现 "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");