我有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")
}
}
}在具有collectionView的相同UIViewController(profileViewController)中
// 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)
}
}我尝试使用类和弱的协议,但仍然不起作用。
发布于 2019-01-01 15:07:18
首先,你的代码
//let headdercell = HeaderProfileCollectionReusableView()不应该被评论。
其次,在取消注释之后,将headerDelegate值赋给self。
headdercell.headerDelegate = selfhttps://stackoverflow.com/questions/53993337
复制相似问题