DDTableViewController 0.0.2

DDTableViewController 0.0.2

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布最后发布2016年4月
SPM支持 SPM

Carl 训练



  • 闻端Carl

DDTableViewController

对于 iOS 开发者来说,优化 UITableView 的使用是永恒的使命。幸运的是,我找到了一种灵感来源于 Arkadiusz Holko 的文章 的精妙且简单的方法来使用它。

安装

手动

将文件拖放到您的项目的 Source 文件夹中。

使用

为所有的 UITableViewCell 子类采用 Updatable 协议。按照以下格式

import DDTableViewController

class CustomCell:UITableViewCell{
    ...
}

struct CustomCellViewData {
    // Declare all properties you need to decorate the cell
    var image:UIImage
}

extension CustomCell: Updatable {
    typealias ViewData = CustomCellViewData
    func updateWithViewData(viewData: ViewData) {
        // Decorate your cell with the viewData
    }
    static var height: CGFloat{
        // Return the height of your cell here
        return 200
    }
}

然后,忘了所有的 UITableView 委托方法,使用 DDTableViewController

let cellConfigurators:[Array<CellConfiguratorType>] = [
    // section 0
    [
        // section 0 row 0
        CellConfigurator<ImageCell>(viewData: ImageCellViewData(image: UIImage(named: "sample.png")!), initFromNib: false),
        // section 0 row 1
        CellConfigurator<TextCell>(viewData: TextCellViewData(text: "Hello World"), initFromNib: false)
    ],
    //section 1
    [
        CellConfigurator<ImageCell>(viewData: ImageCellViewData(image: UIImage(named: "sample2.png")!), initFromNib: false)
    ]
    // ...
]

let tableVC = DDTableViewController(cellConfigurators: cellConfigurators)
self.addChildViewController(tableVC)
self.view.addSubview(tableVC.view)
tableVC.didMoveToParentViewController(self)

任务完成! (查看 Demo 文件夹中的示例)

其他 API

插入单元格

func insertCellAtIndexPath(indexPath indexPath:NSIndexPath, withCellConfigurator cellConfigurator:CellConfiguratorType, RowAnimation animation:UITableViewRowAnimation)

删除单元格

func deleteCellAtIndexPath(indexPath indexPath:NSIndexPath, withRowAnimation animation:UITableViewRowAnimation)

重新加载数据

// Manually manipulate the model layer
tableVC.cellConfigurators.append(...)
tableVC.tableView.reloadData()

滚动

func scrollToBottom(animated animated:Bool)
func scrollToTop(animated animated:Bool)