0

У меня есть пользовательские UICollectionViewController, UICollectionViewFlowLayout и UICollectionViewCell классы. В моем макете я уложил каждый раздел, похожий на http://skeuo.com/uicollectionview-custom-layout-tutorial.UICollectionView делегат не звонит

В настоящее время все данные отображаются правильно при запуске приложения.

Я пытаюсь реализовать didSelectItemAtIndexPath в своем контроллере, чтобы инициировать синхронизацию на основе постукированного элемента. Однако метод делегата никогда не вызван. Внутри моего пользовательского класса я добавил метод 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

+0

У вас есть '[super touchesEnded: touches]' в вашем пользовательском классе? –

ответ

1

Ответил на мой вопрос - элементы, созданные в раскадровке, вызывают initWithCoder вместо initWithFrame. Комментируя явное пользовательское определение классов ячеек, контроллер просмотра может следить за тем, что было настроено в раскадровке, и все работает так, как ожидалось.

+0

Вы также можете использовать метод "awakeFromNib" –

Смежные вопросы