UICollectionView didSelectRowAtIndexPath不起作用
didSelectRowAtIndexPath
方法在我的应用程序中不起作用。 我没有使用NSLog
打印任何输出:
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { PhotoCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath]; PFObject *imageObject = [self.imageFilesArray objectAtIndex:indexPath.row]; PFFile *imageFile = [imageObject objectForKey:@"file"]; [imageFile getDataInBackgroundWithBlock:^(NSData *data, NSError *error) { if (!error) { cell.imageView.image = [UIImage imageWithData:data]; } }]; return cell; } - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { PhotoCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath]; NSLog(@"didSelectRowAtIndexPath"); cell.imageView.image = self.image; return cell; }
我希望当我点击一个单元格时,选择图像,然后将图像赋予self.image
。
我们能用segue做到吗? 因为我的didSelectRowAtIndexPath
方法根本不起作用。
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([segue.identifier isEqualToString:@"showPhotoDetail"]) { NSLog(@"SEGUE showPhotoDetail"); UICollectionViewCell *cell = sender; NSIndexPath *indexPath = [self.collectionView indexPathForCell:cell]; PhotoDetailViewController *photoDetailViewController = (PhotoDetailViewController *)segue.destinationViewController; photoDetailViewController.truckImage = self.image; //[UIImage imageNamed:[self.imageFilesArray objectAtIndex:indexPath.row] ]; NSLog(@"%@", photoDetailViewController.truckImage); } }
选择Item的方法签名是错误的,正确的方法签名就是这个
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
更多信息在这里
编辑
尝试此代码以获取所选图像。
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { PhotoCell *cell = [collectionView cellForItemAtIndexPath:indexPath]; self.image = cell.imageView.image; }
编辑2
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([segue.identifier isEqualToString:@"showPhotoDetail"]) { // get index path of selected cell NSIndexPath *indexPath = [collectionView.indexPathsForSelectedItems objectAtIndex:0]; // get the cell object PhotoCell *cell = [collectionView cellForItemAtIndexPath:indexPath]; // get image from selected cell self.image = cell.imageView.image; } }