我一直在試圖讓我的UICollectionView
對單擊和雙擊有不同的響應,但是我發現的所有答案似乎都表明這並不是真的可行,因爲單擊會首先被識別。它工作在真正慢點擊,但任何更快總是啓動默認的手勢識別器(如果有人有這個工作,我很想知道)...UICollectionViewCells和按鈕
因此無論如何,我現在已經訴諸把按鈕放在我的UICollectionViewCell
(它有它自己的類和NIB文件)。
問題是這樣的:
什麼考慮利用在的CollectionView的UIViewController
按鈕的最好方法?
我現在有在我的UICollectionViewCell
子類的報頭中的協議和已宣佈我的viewController作爲代表並實現所需的協議的功能。
在collectionView:cellForItemAtIndexPath:
我將VC設置爲單元的委託。
這一切都有效,但似乎有點冗長,也許不是一個很好的做法。
我想的另一種方式是使用代表只需撥addTarget:Action:
UICollectionViewCell
collectionView:cellForItemAtIndexPath:
的屬性。
這看起來更簡單,但委託模式看起來更適合我。
任何和所有的建議,哪些會更好,爲什麼,以及任何更合適的替代品歡迎!
謝謝。
Gianluca,謝謝。我在這個方法之間被撕裂,只是將操作添加到'collectionView:cellForItemAtIndexPath:'中的按鈕。任何想法會更好......或爲什麼? – Bertie
您可以將按鈕的操作放在viewController的代碼中,但這會是糟糕的面向對象的代碼。你的viewController不需要知道動作是如何被觸發的:它可能是一個按鈕,一個手勢識別器,以及一個從其他對象到單元本身的API調用。沒關係。您的viewController應該只關心處理單元格告訴他發生的操作。所以,這只是良好的面向對象的實踐,並使您的代碼更加可重用。 –
謝謝,當你這樣說時,它是如此明顯。 – Bertie