控制器减负之分离数据源

控制器减负之分离数据源,第1张

概述Tableview在工程中使用频率非常高,那么对应的数据源也会频繁的出现的工程中。可以将这部分分离到单独的类中 ( 这个类可以复用到工程中 ) ,这样控制就可以减少一部分的代码量。闲话少说,上代码: DataSource中的数据源方法 //MARK: -UITableViewDataSource func numberOfSections(in tableView: UITableView tablevIEw在工程中使用频率非常高,那么对应的数据源也会频繁的出现的工程中。可以将这部分分离到单独的类中 ( 这个类可以复用到工程中 ) ,这样控制就可以减少一部分的代码量。闲话少说,上代码: DataSource中的数据源方法
//MARK: -UItableVIEwDataSource    func numberOfSections(in tableVIEw: UItableVIEw) -> Int {        return itemsArray!.count    }    func tableVIEw(_ tableVIEw: UItableVIEw,numberOfRowsInSection section: Int) -> Int {        return itemsArray![section].count    }    func tableVIEw(_ tableVIEw: UItableVIEw,cellForRowAt indexPath: IndexPath) -> UItableVIEwCell {        let cell: UItableVIEwCell = tableVIEw.dequeueReusableCell(withIDentifIEr: IDentifIErArray![indexPath.section] )!        //获取相应的模型数据        let item = itemAt(indexpath: indexPath)        //执行回调        cellBlock!(cell,item,indexPath)        return cell    }
tableVIEw中设置数据源代码
//MARK: - lazy load tableVIEw    lazy var tableVIEw:UItableVIEw = {        let tableVIEw:UItableVIEw = UItableVIEw(frame: CGRect(x: 0,y: 0,wIDth: UIScreen.main.bounds.size.wIDth,height: UIScreen.main.bounds.size.height),style: .grouped)        var cellOneData = [AnyObject]()        var cellTwoData = [AnyObject]()        for i in 0..<5 {            cellOneData.append("我是组一中第\(i)行的数据" as AnyObject)        }        for i in 0..<5 {            cellTwoData.append("我和组一长的很像但我是组二" as AnyObject)        }        //分离数据源        self.dataSource = DataSource(itemsArray: [cellOneData,cellTwoData],IDentifIErs: [self.tableCellOneID,self.tableCellTwoID],cellBlock: { (cell,indexPath) in            //tableVIEwCellOne和tableVIEwCellTwo就是简单的继承了一下UItableVIEwCell            if indexPath.section == 0 {                cell.textLabel?.text = item as? String            } else {                cell.textLabel?.text = item as? String            }        })        //直接把对象赋值给tableVIEw.dataSource不行,没有保存对象        tableVIEw.dataSource = self.dataSource        //注册两个cell        tableVIEw.register(tableVIEwCellOne.self,forCellReuseIDentifIEr: self.tableCellOneID)        tableVIEw.register(tableVIEwCellTwo.self,forCellReuseIDentifIEr: self.tableCellTwoID)        return tableVIEw    }()
如果对您有帮助,Star一下吧 Github地址:DataSource代码 总结

以上是内存溢出为你收集整理的控制器减负之分离数据源全部内容,希望文章能够帮你解决控制器减负之分离数据源所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1063913.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存