indexPath UICollectionView的值

时间:2012-10-06 15:21:30

标签: objective-c ios nsindexpath uicollectionview

使用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?

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

2 个答案:

答案 0 :(得分:30)

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

答案 1 :(得分:1)

您使用的委托方法始终提供所选单元格的索引路径。 尝试在NSLog调用上使用断点进行调试。当调试器停在它上面时,查看底部的Debug区域并使用控制台(如果需要,可以使用View => Debug Area => Activate Console)。

输入控制台:po indexPath

如果选择的项目是部分列表中的第5个,您应该会看到类似的内容:0(第一部分,可能是唯一部分)

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

希望这有助于弄清楚发生了什么。