2015-09-21 2 views
1

Я просто пытаюсь сделать простой ваниль UICollectionView внутри UIViewController. Все работает по желанию, за исключением того, что ничего не происходит, когда я касаюсь CollectionViewCell, чтобы выбрать его. Вот кости моего кода:UICollectionView didSelectItemAtIndexPath никогда не звонил, хотя делегат установлен

@interface CreateNewFieldViewController() <UITextFieldDelegate, UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout> 

- (void) viewDidLoad { 
... 
    UICollectionViewFlowLayout* flowLayout = [[UICollectionViewFlowLayout alloc]init]; 
    flowLayout.itemSize = CGSizeMake(self.width*.15, self.width*.15); 
    [flowLayout setScrollDirection:UICollectionViewScrollDirectionHorizontal]; 
    flowLayout.minimumInteritemSpacing = 30; 
    flowLayout.minimumLineSpacing = 30; 

    self.collectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(self.width*.1, self.height*.2, self.width*.8, self.height*.3) collectionViewLayout:flowLayout]; 

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

    self.collectionView.allowsSelection = YES; 
    self.collectionView.allowsMultipleSelection = NO; 

    self.collectionView.bounces = YES; 
    self.collectionView.alwaysBounceHorizontal = YES; 
    self.collectionView.alwaysBounceVertical = YES; 
    [self.collectionView registerClass:[CollectionViewCell class] forCellWithReuseIdentifier:@"cell"]; 
    [self.view addSubview:self.collectionView]; 

    self.collectionView.backgroundColor = [UIColor clearColor]; 
... 
} 

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{ 
    self.fieldNameInput.text = self.backgroundImageNames[indexPath.row]; 
    NSLog(@"recording this: %@", self.fieldNameInput.text); 
} 

Источник данных и расположение рабочего потока велика, но по какой-то причине, когда я нажимаю на ячейки, ничего не происходит. Я не вижу никаких операторов журналов, поэтому я знаю, что didSelect не вызывается. Что мне не хватает?


Похоже, что это может быть ловушкой для непосвященных, хотя я до сих пор не могу найти, что это такое. См. это blog post.

ответ

1

Дополнительный вызов для UICollectionView решает эту проблему:

[collectionView selectItemAtIndexPath:indexPath animated:NO scrollPosition:UICollectionViewScrollPositionNone]; 

И

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { 
    UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath]; 
    cell.selected = YES; 
    [collectionView selectItemAtIndexPath:indexPath animated:NO scrollPosition:UICollectionViewScrollPositionNone]; 
    return cell; 
} 
+0

Спасибо за это предложение, но в моем проекте это еще не дает никакого эффекта. – helloB

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