首先点击不在collectionView Xcode

时间:2015-06-17 17:05:56

标签: objective-c xcode ios7 uiviewcontroller collectionview

我有一个带有数组的collectionView。我设置了当一个单元格被轻敲时,会出现第二个模态视图。问题是第一次敲击无法识别。故事板中的collectionView以及单元格内的单元格和图像都启用了用户交互。

第一次点击时没有显示日志,但第二次点击时没有显示日志。

第二次点击显示第一次点击。如果您在水龙头之间稍等一下,则第三个水龙头显示第二个水龙头,但如果您在第二个水龙头后立即点击第三个水龙头,则第三个水龙头显示第三个水龙头。

如果点击第一个单元格,则第二个单元格显示第一个单元格位于index.row 0但单元格的其余部分位于正确的位置1,2,3,4,5等。

我真的很困惑。

这是我的代码

-(void) viewDidLoad {
[super viewDidLoad];

animalArray = [NSArray arrayWithObjects:@"Cat.png",
                 @"Dog.png",
                 @"Elk.png",
                 @"Fox.png",
                 @"Pig.png",
                 @"Cow.png",
                 @"Bird.png",
                 @"Duck.png",
                 @"Wolf.png",
                 @"Deer.png",
                 @"Lion.png",
                 @"Bear.png",
                 @"Horse.png",
                 @"Sheep.png",
                 @"Zebra.png",
                 @"Tiger.png",
                 @"Goose.png",
                 @"Moose.png",
                 @"Otter.png",
                 @"Panda.png",
                 @"Turkey.png",
                 @"Monkey.png",
                 @"Rabbit.png",
                 @"Grizzly.png",
                 @"Gorilla.png",
                 @"Giraffe.png",
                 @"Bighorn.png",
                 @"Buffalo.png",
                 @"Rooster.png",
                 @"Chicken.png",
                 @"Leopard.png",
                 @"Elephant.png",
                 @"Squirrel.png",
                 @"Butterfly.png",
                 @"Rhinoceros.png",nil];
}


-(NSInteger) numberOfSectionsInCollectionView:(UICollectionView *)collectionView {
    return 1;
}




-(NSInteger) collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
    return animalArray.count;

}

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
    myCell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:indexPath];

    UIImage *images;
    long row = [indexPath row];
    images = [UIImage imageNamed:animalArray[row]];

    myCell.image1.image = images;

    return myCell;
}
-(void) collectionView:(UICollectionView *)collectionView didDeselectItemAtIndexPath:(NSIndexPath *)indexPath {



    if (indexPath.item==1) {

        UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
        UIViewController *vc = [sb instantiateViewControllerWithIdentifier:@"GameSceneOne"];


        vc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
        NSLog(@"mycell.image1.image:%@",myCell.image1.image);

        [self presentViewController:vc animated:YES completion:NULL];


    }

    if (indexPath.item==2) {


        UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
        UIViewController *vc = [sb instantiateViewControllerWithIdentifier:@"GameSceneOne"];
        vc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
        [self presentViewController:vc animated:YES completion:NULL];

    }
}

就像我说一切正常但第一次点击没有注册。

我有另一个问题"我将如何解除此视图并返回到collectionView"?如果我需要,我会发一个单独的问题。

1 个答案:

答案 0 :(得分:3)

如果您仔细查看代码,则会发现此行

-(void) collectionView:(UICollectionView *)collectionView didDeselectItemAtIndexPath:(NSIndexPath *)indexPath {

前段时间我用这种方法犯了同样的错误 didDeselectItemAtIndexPath 当然我们想要 didSelectItemAtIndexPath 而不是