indexPath Wert der UICollectionView
Wenn mit einem UICollectionView, ich bin ratlos, mit immer den indexPath
Wert der didSelectItemAtIndexPath
Methode.
Ich bin mit dem folgenden code-Zeile in die didSelectItemAtIndexPath
Methode:
//FileList is an NSArray of files from the Documents Folder within my app.
//This line gets the indexPath of the selected item and finds the same index in the Array
NSString *selectedItem = [NSString stringWithFormat:@"%@",[FileList objectAtIndex:indexPath.item]];
//Now the selected file name is displayed using NSLog
NSLog(@"Selected File: %@", selectedItem);
Das problem ist, dass die indexPath gibt immer 0 zurück, (siehe code unten) und als Ergebnis nur das erste Element in der FileList NSArray ist immer ausgewählt.
Ich habe versucht, verschiedene Parameter wie
indexPath.row
indexPath.item
- und einfach nur
indexPath
ALLE diese geben den Wert 0 in den folgenden NSLog-Anweisung:
NSLog(@"index path: %d", indexPath.item); //I also tried indexPath.row here
Vielleicht bin ich auch nur mit der Formatierung der NSString falsch, aber ich glaube nicht, dass dies der Fall ist, da es keine Warnungen und ich habe versucht die Formatierung der es anders als an anderen stellen.
Warum die indexPath immer 0 zurück?
Jede mögliche Hilfe würde geschätzt! Danke!
- Bitte zeigen Sie, wie Sie format der Zeichenketten für
NSLog
.item
ist die entsprechende Eigenschaft hier, aber funktional ist das nicht anders zu.row
. Sie müssen mehr zeigen, - wie Sie wissen, ist es null? Was ist FileList?- Ich habe bearbeitet die Frage, und enthalten, wie ich formatieren den string für NSLog und ich habe geklärt, was FileList ist (bitte Lesen Sie code auskommentiert)
- Dein log ist wohl nicht das problem, aber es ist übermäßig kompliziert. Nur: NSLog(@"IndexPath: %d",indexPath.Zeile);
- Ich habe vereinfacht das log-Anweisung aus, aber meine Frage nicht zu tun haben mit NSLog. Ich würde gerne wissen, warum die indexPath 0 zurück.
- Die Frage bearbeitet wurde. Hat jemand irgendwelche Ideen auf diesem?
- Können Sie die frame-der Blick und die collectionViewLayout sizeForItemAtIndexPath, ich hatte dasselbe Problem, wo ich nicht Bearbeiten Sie die Werte entsprechend der Größe der meine benutzerdefinierte Zellen.
- Diese Frage gelöst worden. Meine Frage hier: stackoverflow.com/questions/12608896/... beschreibt das problem, das ich hatte. Die Kommentare auf die akzeptierte Antwort erklären, warum das problem auftrat.
- seien Sie gewarnt, dass die akzeptierte Antwort auf diese Frage fördert WIRKLICH schlechtes design.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In der Gefahr, banal, stellen Sie sicher, Ihr code ist in der
didSelectItemAtIndexPath
Methode eher alsdidDeselectItemAtIndexPath
. Erhalten Sie sehr unterschiedlicheindexPath
Werte für eine bestimmte touch-event in der letzteren Methode, und es ist ziemlich einfach, legen Sie die falsche mit Xcode ist die code-Vervollständigung.Die delegate-Methode, die Sie verwenden bietet immer die index-Pfad der Zelle, die ausgewählt wurde.
Versuchen Sie das Debuggen mit Haltepunkt auf Ihre NSLog nennen. Wenn der debugger anhält, auf der Sie Blick auf die Debug-Area an der Unterseite und verwenden Sie die console (View => Debug Area => Aktivieren Sie die Konsole, wenn Sie es brauchen).
Geben Sie in der Konsole:
po indexPath
Sollten Sie etwas wie dieses, wenn ausgewählte Element ist die 5. der Liste im Abschnitt:0 (Erster Abschnitt und wahrscheinlich die einzige)
<NSIndexPath 0xa8a6050> 2 indexes [0, 5]
Hoffe, das hilft, um herauszufinden, was Los ist.