2015-10-24 2 views
0

У меня есть табличное представление, в этом табличном представлении у меня есть четыре строки, в каждой строке я добавлял представление коллекции программно, и я проверяю, что если в моей первой строке я должен зарегистрировать 1-й ниб ячейки коллекции, если ее вторая строка i должен регистрировать 2-й бит ячейки просмотра коллекции и т. д., а затем просто перезагружать представление коллекции. Я использовал следующий код: -Как загрузить различные наконечники ячейки коллекции в коллекции?

- (UITableViewCell *)tableView:(UITableView *)tableView 
cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:@"cellID"]; 

if(cell==nil){ 
    cell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cellID"]; 
    cell.selectionStyle=UITableViewCellSelectionStyleNone; 
} 
[cell.contentView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)]; 

UICollectionView *collectionView=[[UICollectionView alloc] initWithFrame:CGRectMake(0, 0, cell.frame.size.width, cell.frame.size.height)]; 
collectionView.dataSource=self; 
collectionView.delegate=self; 


if (indexPath.row==0) { 
    [collectionView registerNib:[UINib nibWithNibName:@"QuotesCollectionViewCell" bundle:nil] forCellWithReuseIdentifier:@"quotes"]; 

} else if (indexPath.row==1){ 

    [collectionView registerNib:[UINib nibWithNibName:@"AlphabeticalWiseCategoriresCollectionViewCell" bundle:nil] forCellWithReuseIdentifier:@"alphabets"]; 

} else if (indexPath.row==2){ 

    [collectionView registerNib:[UINib nibWithNibName:@"DaysCollectionViewCell" bundle:nil] forCellWithReuseIdentifier:@"days"]; 

}else if(indexPath.row==3){ 

    [collectionView registerNib:[UINib nibWithNibName:@"LifeAspectsCollectionViewCell" bundle:nil] forCellWithReuseIdentifier:@"life"]; 
} 

[collectionView reloadData]; 
return cell; 

} 

Моя проблема/вопрос заключается в том, как я мог бы прийти, чтобы узнать, с которой вид коллекции СИБ я должен иметь дело в следующих делегатов, потому что здесь я должен указать тот же идентификатор повторного использования, что Я использовал при регистрации nib с представлением коллекции?

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


} 

Моя Вторая проблема заключается в том, как я мог определить, какой TableView Роу коллекции вид ячейки нажата, так как у меня есть другое представление коллекции?

ответ

0

Во-первых, почему вы не используете статический стол? Если вы жестко кодируете каждую ячейку, я думаю, что это будет хорошим улучшением. Далее о вашей проблеме iOS предоставляет каждое свойство тега UIView. Если вы переделаете таблицу в статическую таблицу, вы можете установить свойство тега через InterfaceBuilder. Если нет:

UICollectionView *collectionView=[[UICollectionView alloc] initWithFrame:CGRectMake(0, 0, cell.frame.size.width, cell.frame.size.height)]; 
collectionView.dataSource=self; 
collectionView.delegate=self; 
collectionView.tag = indexPath.row; 

Тогда:

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{ 
    switch collectionView.tag { 
    case 0: 
    ... 
    break 
    case 1: 
    ... 
    break 
    } 
} 

И ваш может использовать этот подход для решения вашей второй проблемы

+0

Спасибо за вашу помощь :-) –

+0

Привет, Можете ли вы сказать мне, что у вас добавлено в – user3575114

0

Вы можете сохранить collectionView, которые вы создали каждый раз, скажем, в array. Таким образом, индекс каждого collectionView в array будет равен indexPath.row. Извлеките индекс параметра collectionView в - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath, вы можете узнать, с какими collectionView вы имеете дело, а также UICollectionViewCell.

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