首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift 4.2委派和协议不起作用

Swift 4.2委派和协议不起作用
EN

Stack Overflow用户
提问于 2019-01-01 14:00:38
回答 1查看 128关注 0票数 2

我有UIViewController(profileViewController),其中有collectionViewcollectionViewheaderCell,其中有segmentedControl,当segmentedControl值改变时,我想猛化delegate方法,但它不起作用,这是代码,这是collectioview headercell的类,以及协议。

代码语言:javascript
复制
import UIKit

// Protocol

protocol headerCellSegmentedDelegate {
    func changeTabe(whichOne : String)
}

// HeaderCell Class

class HeaderProfileCollectionReusableView: UICollectionReusableView {
    var  headerDelegate : headerCellSegmentedDelegate?
    @IBAction func changeValue(_ sender: UISegmentedControl) {
        if sender.selectedSegmentIndex == 0 {
            headerDelegate?.changeTabe(whichOne: "0")
        }else{
             headerDelegate?.changeTabe(whichOne: "1")
        }
    }
  }

在具有collectionView的相同UIViewController(profileViewController)中

代码语言:javascript
复制
    // profileViewController 
import UIKit
import SideMenu

class profileViewController: UIViewController {

    //let headdercell = HeaderProfileCollectionReusableView()
    @IBOutlet weak var collectionView: UICollectionView!
    override func viewDidLoad() {
        super.viewDidLoad()
       // headdercell.headerDelegate = self //still not working with this too
        setupSideMenu()
        // Do any additional setup after loading the view.
    }
}
extension profileViewController : headerCellSegmentedDelegate {
    func changeTabe(whichOne: String) {
        print("which tab " + whichOne)
    }
}

我尝试使用类和弱的协议,但仍然不起作用。

EN

回答 1

Stack Overflow用户

发布于 2019-01-01 15:07:18

首先,你的代码

代码语言:javascript
复制
//let headdercell = HeaderProfileCollectionReusableView()

不应该被评论。

其次,在取消注释之后,将headerDelegate值赋给self。

代码语言:javascript
复制
headdercell.headerDelegate = self
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53993337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档