indexPathに対して2つの異なるセルを持つことができるように、collectionViewからindexPathを自分のセルに渡そうとしています。私はコントローラのインスタンスを渡して、セル内のセルに設定しようとしました。プロトコルデリゲートも試しましたが、どちらもうまくいかないようです。私は非常に頻繁にデリゲートを使用するので、私はそれを正しくやっていることを知っています。この場合、私のデリゲート関数はセルでデリゲートを自分自身に設定しても呼び出されません。私は何が起こっているか分からないが、何も動作していないようだ。indexPathに2つの異なるセルを指定してcollectionViewからindexPathを渡します。
CollectionView VC
protocol ActivityAboutVCDelegtae: class {
func passIndexPath(indexPath:Int)
}
class ActivityAboutVC: UICollectionViewController, UICollectionViewDelegateFlowLayout {
var delegate:ActivityAboutVCDelegtae?
override func viewDidLoad() {
super.viewDidLoad()
self.collectionView!.registerClass(ActivityAboutCell.self, forCellWithReuseIdentifier: CELL_ID)
self.collectionView?.pagingEnabled = true
self.collectionView?.alwaysBounceVertical = false
}
// MARK: UICollectionViewDataSource
override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 2
}
override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(CELL_ID, forIndexPath: indexPath) as! ActivityAboutCell
if delegate != nil {
delegate?.passIndexPath(indexPath.row)
}
return cell
}
CollectionViewCell
import UIKit
class ActivityAboutCell: BaseCell, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout, ActivityAboutVCDelegtae {
lazy var actVc:ActivityAboutVC = {
let vc = ActivityAboutVC()
vc.delegate = self
return vc
}()
func passIndexPath(indexPath: Int) {
print(indexPath)
}
override func setupView() {
super.setupView()
ActivityAboutSetup()
backgroundColor = .whiteColor()
}
「actVc」は**ストーリーボードのコントローラではありません**。それはまったく異なるインスタンスです。そのコントローラへの実際の参照が必要です – vadian