17

谁能告诉我如何获得单元格 IndexPath?我将 IndexPath 保存在 tableView: cellForRowAtIndexPath: 方法中,但这仅在查看单元格时加载,我需要在 viewDidLoad 方法上知道它的索引路径。这导致了一个空值,因为正如我所说,它只在单元格被查看一次后才加载它的值。

谢谢你。

编辑

目的是能够跳转到具有特定编号但与部分和行数不成线性关系的特定单元格。

4

4 回答 4

18

在 tableView 上使用indexPathForCell:方法,给定一个指向 a 的指针,UITableViewCell它返回它的 indexPath。

如果方法尚未设置,您可以将scrollToRowAtIndexPath:atScrollPosition:animated:方法放入. 如果视图在加载后可以多次出现,例如当它调用的模态视图控制器辞职时,这是一个更好的地方。viewWillAppearviewDidLoad

于 2010-04-01T00:09:17.727 回答
2

AUITableViewCell没有NSIndexPath财产。UITableViewDataSource委托定义了为给定请求单元格的方法,NSIndexPath但这并不意味着单元格与NSIndexPath属性有任何持久的关系。

如果您解释更多您想要此属性的内容,也许会有所帮助?你想对单元格的位置做viewDidLoad什么?

于 2010-03-30T19:32:51.783 回答
1

试试这个。。

    NSSet *touches = [event allTouches];
UITouch *touch = [touches anyObject];
CGPoint currentTouchPosition = [touch locationInView:EventlistTable_obj];
NSIndexPath *indexPath = [EventlistTable_obj indexPathForRowAtPoint: currentTouchPosition];
 NSLog(@"Selected  row:%d in section:%d",indexPath.row,indexPath.section);

像这样打电话:

[cell.fourth_image_button addTarget:self action:@selector(Btn_pressed:event:) forControlEvents:UIControlEventTouchUpInside];
于 2011-05-03T11:29:55.983 回答
0

在我看来,你回答了你自己的问题:你不能。因为执行 viewDidLoad 时单元格没有 indexPath。事实上,它以后也没有,因为如果您使用单元格出列(好词!),那么同一个单元格可以在十分之一秒内被重用到另一个索引处,这是您应该的。

编辑:好的,我想我明白了您想要什么:当您将单元格交给 tableView 时,您自己将 indexPath 保存在某个地方。注意:如果你不这样做,你就无法真正知道特定单元格放置在哪个 indexPath 上,至少如果你按照你应该的方式做事的话。

所以你可以做的就是简单地在你的 viewDidLoad 方法中创建所有的单元格,将它们存储在一个数组中,然后,当 table view 请求它们时,只需从那个数组中传递它们。

请注意,这不是填充表格视图的好方法,因为它会阻止单元格被重用。更好的方法是将单元格(普通 UIView)的内容保存在数组中,并在返回单元格之前将它们作为子级添加到单元格的内容视图中。这将允许单元重用,这对于良好的性能至关重要。如果您没有比屏幕上容纳的单元格更多的单元格,那么您不必担心重复使用它们。

于 2010-03-30T19:57:14.487 回答