MTORefresher 1.0.1

MTORefresher 1.0.1

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

李福强 维护。



  • lifuqiang

MTORefresher

MTORefresher 是一个 Swift 实现的拉取刷新,包括下拉和上拉。只需一行代码即可实现这一点。您还可以使用 Component 协议来自定义您的拉取刷新组件。

安装

现在支持 Swift 3

pod 'MTORefresher', '~> 1.0.0'
# Optional
pod 'MTORefresher/BasicComponent', '~> 1.0.0'

对于 Swift 2.x

pod 'MTORefresher', '~> 0.1.1'
# Optional
pod 'MTORefresher/BasicComponent', '~> 0.1.1' 

基础

设置

// pull down
let topView: SimpleTopComponent = SimpleTopComponent()
// pull up
let bottomView: SimpleBottomComponent = SimpleBottomComponent()
refresher = tableView
    .mto_refresher()
    .add(topView: topView) { [weak self] in
        self?.reload()
    }
    .add(bottomView: bottomView, enableTap: true) { [weak self] in
        self?.loadMore()
    }
// hide has bottom view
refresher?.canPullUp = false

触发

// trigger pull down
refresher?.triggerLoad(type: .PullDown)
// trigger pull up
refresher?.triggerLoad(type: .PullUp)

加载数据

private func reload() {
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(0.1*Double(NSEC_PER_SEC))), dispatch_get_main_queue()) {
        self.count = 2
        self.tableView.reloadData()
        // stop loading
        self.refresher?.stopLoad()
        // show bottom view
        self.refresher?.canPullUp = true
        self.refresher?.hasMore = true
    }
}

private func loadMore() {
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(0.3*Double(NSEC_PER_SEC))), dispatch_get_main_queue()) {
        self.count += 20
        self.tableView.reloadData()
        // stop loading
        self.refresher?.stopLoad()
        let hasMore = (rand()%2) == 0 ? true : false
        // has more data
        self.refresher?.hasMore = hasMore
    }
}

自定义组件

只需创建一个符合 Componet 协议的子视图。更多请参阅 SimpleTopComponentSimpleBottomComponent!它很容易扩展。