当使用UICollectionView时,我很困惑于获得indexPath方法的didSelectItemAtIndexPath值。

我在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中的第一项才被选中。

我尝试了不同的参数,例如
  • indexPath.row
  • indexPath.item
  • 和普通的indexPath

  • 所有这些都在以下NSLog语句中返回值0:
    NSLog(@"index path: %d", indexPath.item); //I also tried indexPath.row here
    

    也许我只是格式化了NSString的格式不正确,但是我不认为这是事实,因为没有警告,并且我尝试在其他地方以不同的格式进行格式化。

    为什么indexPath总是返回0?

    任何帮助,将不胜感激!谢谢!

    最佳答案

    冒着明显的风险,请确保您的代码在didSelectItemAtIndexPath方法中,而不是在didDeselectItemAtIndexPath中。在后一种方法中,对于给定的触摸事件,您将获得非常不同的indexPath值,并且很容易用Xcode的代码完成插入错误的ojit_code值。

    10-08 05:35