ios – 如何从Swift中的viewController类中分离dataSource和delegate?

ios – 如何从Swift中的viewController类中分离dataSource和delegate?,第1张

概述我正在尝试从viewController中分离dataSource和delegate,以防止viewController变得混乱.我通读了一些帖子,发现我可以像下面一样分开dataSource,创建一个表示dataSource的类: import UIKitclass DataSource: NSObject, UITableViewDataSource, UITableViewDelegat 我正在尝试从vIEwController中分离dataSource和delegate,以防止vIEwController变得混乱.我通读了一些帖子,发现我可以像下面一样分开dataSource,创建一个表示dataSource的类:

import UIKitclass DataSource: NSObject,UItableVIEwDataSource,UItableVIEwDelegate {    var movIEs = [String]()    //MARK: - UItableVIEwDataSource    func numberOfSectionsIntableVIEw(tableVIEw: UItableVIEw) -> Int {        return 1    }    func tableVIEw(tableVIEw: UItableVIEw,numberOfRowsInSection section: Int) -> Int {        return movIEs.count    }    func tableVIEw(tableVIEw: UItableVIEw,cellForRowAtIndexPath indexPath: NSIndexPath) -> UItableVIEwCell {        let cell = tableVIEw.dequeueReusableCellWithIDentifIEr("cellIDentifIEr",forIndexPath: indexPath) as UItableVIEwCell        cell.textLabel?.text =  movIEs[indexPath.row]        return cell    }}

我的问题是:如果我想在DataSource类中使用属​​性或调用vIEwController类的方法,我该怎么办?例如,我想在用户选择单元格时调用presentVIEwController:

func tableVIEw(collectionVIEw: UICollectionVIEw,dIDSelectItemAtIndexPath indexPath: NSIndexPath) {    //do something here    presentVIEwController(vIEwController!,animated: true,completion: nil)}
解决方法 您可以处理选定的回调:

class DataSource: NSObject,UItableVIEwDelegate {        var movIEs = [String]()        private var selectedCallback = ((NSIndexPath)->VoID)?        func selectedItemAtIndex(callback:(NSIndexPath) -> VoID) {            selectedCallback = callback        }}

打回来:

func tableVIEw(collectionVIEw: UICollectionVIEw,dIDSelectItemAtIndexPath indexPath: NSIndexPath) {    //do something here    if let callback = selectedCallback {       callback(indexPath)    }}

使用:

dataSource.selectedItemAtIndex() {  [weak self] indexPath in  // do something ...  // presentVIEwController(vIEwController!,completion: nil)}
总结

以上是内存溢出为你收集整理的ios – 如何从Swift中的viewController类中分离dataSource和delegate?全部内容,希望文章能够帮你解决ios – 如何从Swift中的viewController类中分离dataSource和delegate?所遇到的程序开发问题。

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

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

原文地址:https://54852.com/web/1075277.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存