我有一个自定义UICollectionViewController
,其中包含自定义标题和单元格。
我已经实现了一个协议,其中collectionView响应,所以通过这种方式,我知道在collectionView中当一个对象被访问时(例如按下按钮),到目前为止这么好。
我想要做的是当我点按一个按钮时,在collectionView
中,我需要标题来检索它拥有的collectionView
假设我点击collectionView
中的保存按钮,为了执行保存,我需要标题中的当前数据。
我怎样才能做到这一点?
这是一些当前的代码:
import UIKit
// collection view class
class EditUserProfileHeader: UICollectionViewCell, UITextViewDelegate {
var delegate: CustomHeaderDelegate?
//(... some default code ...)
override func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
let header = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: headerId, for: indexPath) as! CustomHeader
header.delegate = self
return header
}
// header delegate conform
func didTapPhoto() {
// this fires everytime the button is pressed inside the header
print("didTapPhoto was tapped inside the header")
}
func didTapSave() {
//here I need the header's data from it's labels and so on
}
}
protocol CustomHeaderDelegate {
func didTapPhoto()
}
class CustomHeader: UICollectionViewCell {
var delegate: CustomHeaderDelegate?
//(... some class regular code ...)
func didTapPhoto() {
delegate?.didTapPhoto() // here I pass to the collectionView that this button was pressed in the header
}
}
正如您所看到的,我已经实现了一个委托,只要标题中出现didTapButton
,我就会调用委托函数,因此我在collectionView
中知道按钮被触发了。 / p>
现在我需要尝试相反的事情;当我点击collectionView
内的按钮时,我需要标题来了解它,并且它会检索所需的数据。
任何人都可以帮我解决这个问题吗?
我试图实施另一个协议来做相反的事情,但我可能做错了,因为它没有用,主要是因为我不能说'在父类的委托符合该特定委托的头类中,当我实例化头对象并设置其collectionView
时,我在delegate to self
中做了什么
由于
答案 0 :(得分:0)
我设法访问了在didTapSave()函数中插入以下行的所需标题
let header = collectionView?.supplementaryView(forElementKind: UICollectionElementKindSectionHeader, at: IndexPath(item: 0, section: 0)) as? CustomHeader
因为我可以访问标题更新数据。