根据indexpath.row选择

时间:2016-04-22 22:09:59

标签: ios objective-c cocoa-touch uicollectionview

我有一个显示5个单元格的collectionView。现在我想要的是,例如,如果我点击第一个单元格,则下一个单元格的imageView是imageOne,如果我点击第二个单元格,则imageView将是imageTwo。在detailViewController中。

我正在努力实现这一目标。这是我到目前为止所做的 在UIView控制器的prepareFor Segue上有一个UiCollectionView

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    if([segue.identifier isEqualToString:@"MainPush"]){
        NSIndexPath *indexPath = [self.collectionView.indexPathsForSelectedItems objectAtIndex:0];
        NSLog(@"%li", indexPath.row);

// Getting the collectionView cell in the destination class
        if(indexPath.row == 0){
       DetailCollectionViewCell *cell = [[DetailCollectionView alloc] init];
        cell.imageView.image = [UIImage imageNamed: @"Thailand"];
        }

    }
}

我点击这个单元格它会转到另一个集合视图,但我希望所选集合中的图像根据所选的indexpath.row而不同。

我这样做但没有发生

1 个答案:

答案 0 :(得分:0)

假设您正在尝试将UIimage传递给详细视图控制器。这是我的建议。首先,实现这个:

-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
    CurrentImage = [imageArray objectAtIndex:indexPath.row]; //assume what you have an image object and you have an array contains images. 
    [self performSegueWithIdentifier:@"MainPush" sender:nil];
}

单击单元格时调用此方法。在内部,代码假定你在mainViewController中拥有一个图像对象,并且你有一个包含图像的数组。在其下方,调用performSegue方法。 请记得使用您的ID

在故事板中设置SegueWay
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{

    if ([[segue identifier] isEqualToString:@"MainPush"]) {
        DetailedController *controller = (DetailedController *)[segue destinationViewController];
        controller.image = CurrentImage;
    }
}

这是一个重要的部分。我假设你的viewController的名字是DetailedController。 1.您必须在目标控制器中创建一个图像对象。 2.单击单元格时,它会将currentImage对象设置为用户刚刚单击的图像,并将其传递给DetailViewController。

在DetailController ViewDidLoad方法中,您可以将UIimageView.image设置为image。