我創建了一個自定義類,它是UICollectionReusableView
的子類。它本質上是一個集合視圖的部分標題,我在它上面添加了幾個按鈕。當按下按鈕時,我希望視圖控制器過濾結果(取決於按下哪個按鈕)。設置我的自定義類'代表我的視圖控制器
我需要我的視圖控制器有一個這個自定義類的出口,但沒有工作,因爲Xcode抱怨重複的內容有類(即使我只打算使用一個collectionView節頭)。所以我的下一個選擇是委派。
我的問題是雙重的:
如何設置我的自定義類授人以視圖控制器?通常我在
prepareForSegue
中設置委託,但由於我沒有這些,我不知道該怎麼做。我的視圖控制器是在故事板中創建的,我的自定義類沒有引用它。即使在我的視圖控制器中,我也無法訪問集合視圖的節頭以將其委託設置爲自我(我檢查了Apple的文檔,並且沒有屬性可以訪問節標題)。當我將
IBAction
設置爲我的自定義類時,如何確保點按的按鈕也作爲發件人傳入?我已經將其中一個按鈕連接到了一個動作,並且寫了func someAction (sender: AnyObject) {}
,但是程序如何知道該按鈕本身應該作爲發件人傳入?
這裏是我的代碼:
// Custom Class
class CollectionHeaderView: UICollectionReusableView {
@IBAction func buttonPressed (sender: AnyObject) {
**delegate?.didTapButton(self)**
}
var delegate: UICollectionViewDelegate?
}
// Protocol
protocol CollectionHeaderViewDelegate {
func didTapButton(sender: CollectionHeaderView)
}
// View Controller (the delegate)
func collectionView(collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, atIndexPath indexPath: NSIndexPath) -> UICollectionReusableView {
let headerView = collectionView.dequeueReusableSupplementaryViewOfKind(kind, withReuseIdentifier: "CollectionHeaderView", forIndexPath: indexPath) as! CollectionHeaderView
headerView.delegate = self
return headerView
}
extension BrowseViewController: CollectionHeaderViewDelegate {
func didTapButton(sender: CollectionHeaderView) {
print("Delegate's Button Tapped")
}
}
加粗的部分就是Xcode中給我的錯誤,指出,「類型UICollectionViewDelegate價值沒有成員‘難道輕按按鈕’」 - 不知道爲什麼它指的是UICollectionViewDelegate ..我試着改變變量名稱和調用來點擊委託給headerViewDelegate,但它仍然給出錯誤。
謝謝!這爲我打開了很大的潛力!哈哈。 –