5

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

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

4

2 回答 2

30

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

于 2012-12-14T14:39:26.530 回答
1

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

在控制台中输入:po indexPath

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

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

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

于 2012-10-27T14:44:09.673 回答