2015-05-13 4 views
-4

У меня есть три различных типа клеток с различными content size (содержащих image, label и button) в UICollectionview. Я получаю данные от веб-сервисов. Я хочу показать правильную ячейку на основе этих типов.Показать различные элементы на основе типа данных в UICollectionView

+0

из-за к недостатку Репутация я неспособный передать изображение ячейки. – user3518202

+0

Хорошо для вас. Что вы намерены делать с указанными ячейками? –

+0

post link image –

ответ

0

Во-первых, вы регистрируетесь крупку макетов для ваших клеток:

[collectionView registerNib:myCellTypeImageNib forCellWithReuseIdentifier:@"MyModelTypeImageCellIdentifier"]; 
[collectionView registerNib:myCellTypeLabelNib forCellWithReuseIdentifier:@"MyModelTypeLabelCellIdentifier"]; 
[collectionView registerNib:myCellTypeButtonNib forCellWithReuseIdentifier:@"MyModelTypeButtonCellIdentifier"]; 

Затем верните их соответствующим образом:

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { 
    MyModel *modelObject = self.dataArray[indexPath.item]; 
    UICollectionViewCell *cell = nil; 
    switch (modelObject.type) { 
     case MyModelTypeImage: 
      cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"MyModelTypeImageCellIdentifier" forIndexPath:indexPath]; 
      //adjust cell 
      break; 
     case MyModelTypeLabel: 
      cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"MyModelTypeLabelCellIdentifier" forIndexPath:indexPath]; 
      //adjust cell 
      break; 
     case MyModelTypeButton: 
      cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"MyModelTypeButtonCellIdentifier" forIndexPath:indexPath]; 
      //adjust cell 
      break; 
    } 
    return cell; 
} 
+0

Спасибо, что ответили на мои вопросы, я купил я создал ячейки в раскадровке, указав количество элементов как 3 и дал другой Идентификатор для каждой ячейки – user3518202

+0

Затем вы можете опустить вызовы 'registerNib'. Другой код по-прежнему хорошо – Azat

+0

Спасибо, я попробую – user3518202

-1

Вы можете использовать

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

Примечание: indexpath

Например. Добавьте все изображения в array.

self.myArray = [[NSArray alloc] initWithObjects:@"first.jpg", 
           @"second.jpg", 
           @"third.jpg", 
           @"last.jpg",nil] 

Затем в cellForRow... сделать следующее:

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
    // configure cell 
    ... 
    cell.myImageView = [self.myArray objectAtIndex:indexPath.row; 
} 
+0

Три разных размера ячеек с разным расположением – user3518202

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