2012-10-06 12 views
5

Quando si utilizza UICollectionView, sono perplesso di ottenere il valore indexPath del metodo didSelectItemAtIndexPath.indexPath Valore di UICollectionView

Sto utilizzando la seguente riga di codice nel metodo didSelectItemAtIndexPath:

//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); 

Il problema è che l'indexPath restituisce sempre 0 (vedi sotto codice) e di conseguenza solo il primo elemento in FileList NSArray è sempre selezionato.

Ho provato diversi parametri come ad esempio

  • indexPath.row
  • indexPath.item
  • e semplicemente indexPath

TUTTE queste restituiscono un valore pari a 0 nella seguente dichiarazione NSLog:

NSLog(@"index path: %d", indexPath.item); //I also tried indexPath.row here 

Forse sto solo formattando l'NSString in modo errato, tuttavia non penso che questo sia il caso in quanto non ci sono avvisi e ho provato a formattarlo diversamente in altri posti.

Perché indexPath restituisce sempre 0?

Qualsiasi aiuto sarebbe apprezzato! Grazie!

+1

Mostrare come si formattano le stringhe per 'NSLog' – dasblinkenlight

+0

' .item' è la proprietà appropriata qui, ma funzionalmente non è diverso da '.row'. Devi mostrare di più - come sai che è zero? Cos'è FileList? – jrturton

+0

Ho modificato la domanda e incluso come formatto la stringa per NSLog e ho chiarito che cos'è FileList (leggere il codice commentato) –

risposta

1

Il metodo delegato che si sta utilizzando fornisce sempre il percorso dell'indice della cella selezionata. Provare a eseguire il debug con un punto di interruzione nella chiamata a NSLog. Quando il debugger si ferma, guarda l'Area Debug in basso e usa la console (Visualizza => Area Debug => Attiva Console se ti serve).

Digitare nella console: po indexPath

Si dovrebbe vedere qualcosa di simile se l'oggetto selezionato è il 5 ° della lista nella sezione: 0 (prima sezione e probabilmente l'unico)

<NSIndexPath 0xa8a6050> 2 indexes [0, 5]

Spero che questo aiuti a capire cosa sta succedendo.

30

A rischio di affermare l'ovvio, assicurarsi che il codice sia nel metodo didSelectItemAtIndexPath anziché didDeselectItemAtIndexPath. Otterrete valori indexPath molto diversi per un dato evento tocco nel secondo metodo ed è abbastanza facile inserire quello sbagliato con il completamento del codice Xcode.

+2

Amico, mi hai salvato. Stavo facendo il debug per un'ora, grazie. –

+2

Questo mi ha beccato due volte. Grrr ... – malaki1974

+2

Accidenti a te, completamento automatico – DaGaMs

Problemi correlati