2016-10-06 1 views
0

Ich habe die Hauptansicht Controller, der UICollectionViewController ist, wo ich erklären:Durchflußzelle Index zwischen uicollectioncontroller und Viewcontroller

var cellIndex: Int = 0 

dann I

cellIndex = indexPath.item+1 

dann einen Wert dieser Variablen in didSelectItemAtIndexPath Verfahren zuweisen I Senden Sie es über prepareForSegue-Methode an den zweiten View-Controller.

destination.cellIndexToUse = self.cellIndex 

in meinem zweiten View-Controller (das ist das Ziel) Ich erkläre

var cellIndexToUse: Int = 0 

und dann in viewDidLoad nenne ich eine Funktion, die den Wert der korrekten Anordnung von Bildern zu zeigen, je nachdem, welcher Zelle gewesen einem leeren Array zuweist hat geklopft, ist diese Funktion ...

func assignArrays() { 
if cellIndexToUse == 0 {objectsImages = imagesA} 
if cellIndexToUse == 1 
{objectImages = imagesB} 
if cellIndexToUse == 2 
{objectImages = imagesC} 
if cellIndexToUse == 3 
{objectImages = imagesD} 

mein Problem ist: , wenn ich die Zellen klicken, um alle die Bilder zeigen, richtig sind, aber dann, wenn ich alle Zellen zum zweiten Mal klicken, zeigt die erste Zelle kein Bilder, der ganze Rest ist vollkommen in Ordnung.

Antwort

0

Vielleicht rufen Sie die Funktion zu früh an. viewDidLoad tritt vor der Zuweisung von cellIndexToUse auf.

Versuchen Sie stattdessen, die Bilder in viewWillAppear einzurichten.

+0

es nicht helfen ... also mache ich einen Fehler, um den IndexPath abzurufen ... muss mehr darüber lernen, wie man das macht – user6930957

+0

vielleicht mache ich einen Fehler in dieser Zeile: "cellIndex = indexPath.item" da es mir nicht den richtigen int – user6930957

+0

Ja, das klingt nach einer wahrscheinlichen Ursache. Ich nahm an, dass die anderen Mechaniker wie erwartet funktionieren. Außerdem ist es keine gute Idee, auf diese Weise mit Indexpfaden zu arbeiten, aber das ist ein anderes Problem. – Mundi

0

Ich habe mein Problem gelöst und es funktioniert einwandfrei. Ich werde hier eine Antwort, falls schreiben jemand es braucht:

ich nicht didSelectItemAtIndexPath überhaupt brauchte, so dass ich es gelöscht, aber ich korrigiert prepareForSegue Methode:

if (segue.identified == "mySegueIdentifier") { 
    let destination = segue.destinationViewController as! MyNextViewController 
    destination.cellIndexToUse = (myCollectionView.indexPathsForSelectedItems()?.first?.item)!} 
Verwandte Themen