Подтвердить что ты не робот

Подкласс iOS Подкласс UICollectionViewCell

Я реализую пользовательский UICollectionViewCell, и я хочу знать, как отправить ему данные модели, чтобы данные могли использоваться для инициализации подсмотров ячейки.

Я зарегистрирую свой MyCollectionViewCell, выполнив..

[self.collectionView registerClass:[MyCollectionViewCell class] forCellWithReuseIdentifier:@"MyCell"];

и в следующем методе, я делаю...

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {

MyCollectionViewCell* cell = [self.collectionView dequeueReusableCellWithReuseIdentifier:@"MyCell" forIndexPath:indexPath];

Проблема, с которой я столкнулась, заключается в том, что когда ячейка не находится в очереди повторного использования, она инициализирует новую ячейку, вызывая метод initWithFrame (который должна подтверждаться документацией). Однако у меня есть собственный метод init в моем классе MyCollectionViewCell, который...

-(id) initWithFrame:(CGRect)frame withData: (NSDictionary*) data;

Я хочу, чтобы вместо этого был вызван мой пользовательский метод инициализации. Как мне это сделать? Я не использую никаких наконечников, и я делаю все программно.

Если нет способа, и вместо этого я должен использовать метод initWithFrame, как еще я могу передать данные модели в свой MyCollectionViewCell, чтобы я мог инициализировать subviews с этими данными?

Спасибо!

4b9b3361

Ответ 1

Как насчет [cell initData: data] сразу после его удаления? Во всяком случае, вам, вероятно, придется повторно инициализировать данные на выделенных ячейках.

Ответ 2

Другой вариант - предоставить вашему объекту layoutAttributes указатель на данные и убрать ячейку оттуда в методе applyLayoutAttributes:.