我有一个带有数组的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"?如果我需要,我会发一个单独的问题。
答案 0 :(得分:3)
如果您仔细查看代码,则会发现此行
-(void) collectionView:(UICollectionView *)collectionView didDeselectItemAtIndexPath:(NSIndexPath *)indexPath {
前段时间我用这种方法犯了同样的错误 didDeselectItemAtIndexPath 当然我们想要 didSelectItemAtIndexPath 而不是