0

我有自定義UICollectionViewController,UICollectionViewFlowLayoutUICollectionViewCell類。在我的佈局中,我已將每個部分堆疊起來,類似於http://skeuo.com/uicollectionview-custom-layout-tutorialUICollectionView代表不被稱爲

當我運行應用程序時,所有數據都顯示正確。

我正試圖在我的控制器中實現didSelectItemAtIndexPath,以根據點擊項目啓動seque。但是委託方法永遠不會被調用。在我的自定義單元類中,我添加了一個調用了touchesEnded的方法,但我無法弄清楚爲什麼我的視圖控制器類中的委託沒有觸發。

在我的UICollectionViewController類我指定協議<UICollectionViewDelegate, UICollectionViewDataSource>。在viewDidLoad我還規定:

self.collectionView.delegate = self; 
self.collectionView.dataSource = self; 

作爲一個方面說明,但我認爲這是一個相關問題: - 在故事板,我有我的原型細胞。這是班級類型設置爲我的自定義班級,我已設置ReuseIdentifier。在我的視圖控制器中加載我的自定義單元類並使用相同的ReuseIdentifier。但是,StoryBoard和Cell類之間存在脫節。我可以對故事板原型單元進行更改,並且不會反映在運行時發生的情況。相反,我必須將該行註釋掉:

[self.collectionView registerClass:[NSideCollectionViewCell class] forCellWithReuseIdentifier:NSIDE_CELL_IDENTIFIER]; 

強制它使用我的故事板單元格版本。但是當我這樣做時,我的單元類中的我的initWithFrame自定義初始化代碼永遠不會被調用。我不確定爲什麼會出現這種情況,因爲Storyboard清楚地顯示我的原型單元格具有正確的類別類型。

+0

你的自定義單元格是什麼樣的?你是否有類似UITextView的東西來覆蓋可能攔截觸摸的大部分單元格? – jeffro37 2015-04-02 14:28:44

+0

您的自定義課程中是否有[超級觸控着陸:觸動]? – 2015-04-02 14:43:46

回答

1

回答了我自己的問題 - 在故事板中創建的項目調用initWithCoder而不是initWithFrame。註釋顯式自定義單元類註冊允許視圖控制器遵循故事板中設置的內容,並且所有內容都按預期工作。

+0

你也可以使用方法「awakeFromNib」 – 2015-04-02 15:39:20