2016-04-22 6 views
0

Ich habe eine CollectionView, die 5 Zellen zeigt. Nun, was ich möchte, ist zum Beispiel, wenn ich auf die erste Zelle tippen die ImageView für die nächste Zelle ist ImageOne und wenn ich auf zweite Zelle tippen wird die ImageView ImageTwo sein. im DetailViewController.ändern UICollectionView Zelle Bildansicht entsprechend der indexpath.row ausgewählt

Ich versuche das zu erreichen. hier ist das, was ich bisher in prepareFor Segue in der UIView-Controller mit einem UiCollectionView auf es getan haben

- (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"]; 
     } 

    } 
} 

I i auf dieser Zelle tippen sie auf eine andere Collection genau wie das geht, aber ich möchte die Bilder in der selected collectionView ist entsprechend dem ausgewählten indexpath.row unterschiedlich.

Ich tue dies aber nichts geschah

+0

versuchen Sie ein Bild an den Detailansicht-Controller zu übergeben? Mit anderen Worten, versuchen Sie, zu einem anderen View-Controller zu wechseln, wenn eine Zelle ausgewählt wird? – NeilNie

Antwort

0

Angenommen, Sie versuchen, eine UIImage in der Detailansicht Controller zu übergeben. Hier sind meine Vorschläge. Implementieren Sie zuerst:

-(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]; 
} 

Diese Methode wird aufgerufen, wenn auf eine Zelle geklickt wird. Im Inneren nimmt der Code an, was Sie ein Bildobjekt in Ihrem mainViewController haben, und Sie haben ein Array mit Bildern. Direkt darunter wird die performSegue-Methode aufgerufen. erinnere mich an die SegueWay in Ihrem Storyboard mit Ihrer ID

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 

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

Dies ist ein wichtiger Teil einzustellen. Ich nehme an, dass der Name Ihres ViewControllers "DetailedController" lautet. 1. Sie müssen ein Image-Objekt in Ihrem Ziel-Controller erstellen. 2. Wenn auf die Zelle geklickt wird, wird das currentImage-Objekt auf das Bild gesetzt, auf das der Benutzer gerade geklickt hat, und an den DetailViewController übergeben.

In der ViewDidLoad-Methode von DetailController können Sie UIimageView.image auf image festlegen.