什么是NSIndexPath?

29
NSIndexPath的作用是什么?我的理解是,IndexPath变量用于引用我们想要显示的单元格,但它存储什么值?我指的是,设置indexPath变量的内部过程是什么?

3
似乎你正在提出三个不同的问题。 - Alexsander Akers
1
我对 IndexPath 感到困惑,任何信息都可以帮助! - Kiran Kulkarni
4个回答

44
它被用作在数组中引用其他数组的向量。例如,你可以使用IndexPath来表示到数组[a][b][c]的路径。在内部,它用于iPhone列表视图,例如允许您选择一个国家,然后为该区域提供选项,最后列出所选区域内的城市的列表视图。您选择的城市的IndexPath将包括通过国家和地区到达它的路径。
具体针对UITableViews,NSIndexPath扮演稍微扩展一些的角色。UIKit将行和段落属性添加到NSIndexPath的实例中,并提供了一个类方法+indexPathForRow: inSection:。
因此,如果您想要选择或删除表格中的特定行,则需要将NSIndexPath实例传递给该表格。要创建它,您将使用indexPathForRow:inSection来创建NSIndexPath实例。
如果您有一个现有的NSIndexPath,并想获取有关它的信息并且它来自表视图,则使用其行和段落属性获取数据。
如果在表视图之外遇到索引路径,请注意其使用的细节。无论如何,总的来说,它都是对数组的特定元素的引用。

谢谢回复!!那就是我在寻找的东西。 - Kiran Kulkarni

15
在iOS中,NSIndexPath对象始终长度为2。它们用于例如索引表视图单元格。在NSIndexPath对象中,第一个索引称为section,第二个为row。带有section 0和row 0的索引路径对象表示第一部分中的第一行。 处理iOS上的索引路径时,这就是您需要知道的全部内容。

参考链接:http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSIndexPath_Class/Reference/Reference.html..
他们将 Index path 称为 1.4.3.2,那么根据你的解释,我们是在选择子部分吗?比如第一节、第四个子节、第三个子节,然后是第二行?
- Kiran Kulkarni
4
我猜测我的回答因为这个原因被踩了。除非我错了,否则这不是真的。这一节和行适用于许多情况,特别是当您将表视图分成多个部分时。但事实仍然如此,它们代表到达特定节点的路径 - 如果只是一个部分(第一个节点)和索引(第二个节点)。此外,苹果文档在这里非常明确,包括这份 iOS 特定文档的第8页: http://developer.apple.com/library/ios/DOCUMENTATION/Cocoa/Reference/Foundation/Classes/NSIndexPath_Class/NSIndexPath_Class.pdf - Michael Petrov
1
进一步扩展一下,UIKit为NSIndexPath的实例添加了行和段属性,以及一个类方法+ indexPathForRow:inSection:。因此,如果您坚持使用这两个属性和这个初始化程序,则NSIndexPath的其余细节不应太重要。对于所有混乱的细节,我感到抱歉! - Michael Petrov
哦!!非常感谢您抽出时间来帮忙,我很高兴您提到了方法+indexPathForRow:inSection:.. 我对indexPath的概念有点困惑,这样就可以了!谢谢!最后一个问题:基本上,值将如何存储在indexPath对象中...,像NSString“1.4.5.3”一样,还是有其他方法可以做到这一点(只是出于好奇),您说UIKit将行和部分属性添加到NSIndexPath实例中。那会是一个整数值... [又困惑了!!] 对不起,没有正确编译评论:P - Kiran Kulkarni
完全没有问题,很高兴能帮忙!至于它是如何存储的,绝对不是作为字符串。文档暗示它是一个NSUInteger值的C数组(不是NSArray,只是一个动态的NSUInteger *)。但这并不重要,因为不能安全地假设它是如何存储的,因为它可能会在版本之间发生变化。你只需将值传入其中作为黑盒子,然后获取相同的值(它会处理其余部分)。 - Michael Petrov

7

苹果公司的类参考文档只对那些已经在认知过程中实例化了该模型的人有用。当有人提出像原帖这样的问题时,即使他们无法充分表达自己的困惑,类参考文档也是一些最美妙的非信息之一。我也在努力弄清楚如何--用另一个SO答案的话来说--填写“//计算某个索引路径”(仅知道单元格的整数偏移量...我想选择我的第n项),并且正在寻找与原帖相同水平的概念概述,因此我想解释一下这个困境。


1

我不太确定你在问什么,但是这里有更多的信息这里


1
我想知道的是,在UITableView中为什么要使用IndexPath? - Kiran Kulkarni

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接