2012-10-06 6 views
5

UICollectionViewを使用しているとき、私はdidSelectItemAtIndexPathメソッドのindexPathの値を得ることに困惑しています。UICollectionViewのindexPathの値

Iは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); 

問題はindexPathは常に0(コード下記参照)、その結果としてのみ最初の項目を返すことですFileList NSArrayが選択されます。

私はこれらのすべては、次のNSLog文で0の値を返すように

  • indexPath.row
  • indexPath.item
  • と単なるindexPath

など、さまざまなパラメータを試してみました:

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

たぶん私はNSStringを不適切にフォーマットしているだけですが、警告がなく、別の場所で書式を設定しようとしたため、これは当てはまりません。

なぜindexPathは常に0を返しますか?

ご協力いただければ幸いです!ありがとう!

+1

'NSLog'の文字列の書式を示してください。 – dasblinkenlight

+0

' .item'はここでは適切なプロパティですが、機能的には '.row'と違いはありません。もっと見る必要があります - それがゼロであることをどのように知っていますか? FileListとは何ですか? – jrturton

+0

私は質問を編集し、NSLogの文字列をどのように書式設定するかを含めました.FileListの内容を明確にしました(コメントコードをお読みください) –

答えて

1

使用しているデリゲートメソッドは、常に選択されたセルのインデックスパスを提供します。 NSLog呼び出しでブレークポイントでデバッグしようとします。デバッガが停止したら、デバッグエリアを一番下に見て、コンソールを使用します(必要に応じて、View => Debug Area => Activate Console)。コンソールで

タイプ:po indexPath

選択した項目は、セクションのリストの第5回である場合は、このように表示されます。0(最初のセクションと、おそらく唯一の)

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

これは何が起こっているのか把握するのに役立ちます。

30

当然のことながら、didDeselectItemAtIndexPathではなく、コードがdidSelectItemAtIndexPathの方法であることを確認してください。後者の方法では、与えられたタッチイベントに対して非常に異なるindexPath値が得られます.Xcodeのコード補完で間違ったものを挿入するのは簡単です。

+2

おい、あなたは私を救った。私は1時間デバッグしていました。ありがとうございました。 –

+2

これは今私を2回捉えました。 Grrr ... – malaki1974

+2

くそ、オートコンプリート – DaGaMs

関連する問題