AZTableView 0.0.3

AZTableView 0.0.3

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

Maintained by Afroz Zaheer.



  • By
  • AfrozZ

AZTableView 控制器

Alt text

特性

  • 自动分页处理
  • 不再有尴尬的空TableView了
  • AZ TableView控制器让您可以通过Interface builder连接(Loading, 无结果, 错误)视图

版本 0.0.2 新增功能

  • 您可以添加您自定义的 xib 作为占位视图(加载,错误,无结果)
  • 您可以使用 xib 基于的下一页加载单元格

使用方法

步骤 1

  • 将您的视图控制器扩展为 AZTableVIewController
class ViewController: AZTableViewController {

    var lastIndex = 0
    var results = [String]()
    override func viewDidLoad() {

/*      self.loadLoadingView(nibName: "") // if bundle is nil
        self.loadLoadingView(nibName: "", bundle: myBunlde) // if custom bundle */ 
// if want to load views from .XIB files 

        super.viewDidLoad()
        self.fetchData()
    }

    override func viewDidAppear(_ animated: Bool) {

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

步骤 2

  • 设置下一个页面加载器单元格出口如下

Alt text

Alt text

步骤 3

  • 确认您的控制器实现 UITableViewDelegate 和 UITableViewDataSource

  • 并覆盖 AZtabeView cellForRow 函数。

extension ViewController : UITableViewDataSource, UITableViewDelegate {

    override func AZtableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        if let cell = tableView.dequeueReusableCell(withIdentifier: "Cell")
        {
            cell.textLabel?.text = results[indexPath.row]
            return cell
        }
        return UITableViewCell()
    }
    
    override func AZtableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return results.count
    }
}

步骤 4

  • 覆盖 fetchData 和 fetchNextData 函数的另外两个函数
//MARK: - API Call
extension ViewController {
    
    override func fetchData() {
        super.fetchData()
        
        FakeService.getData { (error, results) in
           
            if let resu = results {
                self.results.removeAll()
                self.results.append(contentsOf: resu)
                self.didfetchData(resultCount: resu.count, haveMoreData: true)
            }
                
            else if let error = error {
                self.errorDidOccured(error: error)
            }
        }
    }
    
    override func fetchNextData() {
        super.fetchNextData()
        
        FakeService.getData (offset: results.count) { (error, results) in
            
            if let resu = results {
                
                self.results.append(contentsOf: resu)
                if self.results.count < 45 { // you probably get next page exist from service.
                    self.didfetchData(resultCount: resu.count, haveMoreData: true)
                }
                else {
                    self.didfetchData(resultCount: resu.count, haveMoreData: false)
                }
            }
            else if let error = error {
                self.errorDidOccured(error: error)
            }
        }
    }
}

许可协议

AZTableView 基于 MIT 许可协议。请参阅 LICENSE 文件获取更多信息。

作者

Afroz Zaheer - (https://github.com/AfrozZaheer)