我有UIViewController
(profileViewController
)其中有collectionView
,collectionView
有headerCell
其中有segmentedControl
,当segmentedControl
值更改,我想使用delegate
方法,但是它不起作用,下面是代码,
这是collectioview headercell
和协议的类。
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")
}
}
}
在具有UIViewController
的同一profileViewController
(collectionView
)
// 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)
}
}
i尝试使用类和弱类的协议,但仍然无法正常工作。
答案 0 :(得分:0)
首先是您的代码
//let headdercell = HeaderProfileCollectionReusableView()
不应该被评论。
第二,取消注释后,将headerDelegate值分配给self。
headdercell.headerDelegate = self