任何人都可以告诉我如何获得一个单元格IndexPath? 我在tableView:cellForRowAtIndexPath:方法中保存了IndexPath,但这仅在查看单元格时加载,我需要知道viewDidLoad方法的索引路径。这导致了一个空值,因为正如我所说,它只在一次查看单元格后才加载它的值。
谢谢。
修改
目的是能够跳转到具有特定数字的特定单元格,但它与部分和行数不是线性的。
答案 0 :(得分:18)
在tableView上使用方法indexPathForCell:,给定指向UITableViewCell
的指针,它返回其indexPath。
如果scrollToRowAtIndexPath:atScrollPosition:animated:
中尚未设置viewWillAppear
,则可以将viewDidLoad
置于{{1}}方法中。如果视图在加载后可以出现多次,例如当它调用的模态视图控制器停止时,这是一个更好的地方。
答案 1 :(得分:2)
UITableViewCell
没有NSIndexPath
属性。 UITableViewDataSource
委托定义了为给定NSIndexPath
请求单元格的方法,但这并不意味着单元格与NSIndexPath
属性有任何持久的关系。
如果您解释了更多您想要这个属性的内容,也许会有所帮助?您想对viewDidLoad
中的单元格位置做什么?
答案 2 :(得分: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];
答案 3 :(得分:0)
对我来说,就像你回答了自己的问题:你做不到。因为执行viewDidLoad时单元格没有indexPath。事实上,它之后也没有,因为如果你使用单元格出列(好词!),那么同样的单元格可以在十分之一秒内被重用于另一个索引。
编辑:好的,我想我看到了你想要的东西:当你将单元格传递给tableView时,你正在自己保存indexPath。注意:如果你不这样做,你就无法真正知道特定单元格放置在哪个indexPath上,至少在你按照自己应该的方式做事时是这样。
所以你可以做的只是在viewDidLoad方法中创建所有单元格,将它们存储在一个数组中,然后,当表视图请求它们时,只需将它们从该数组中移除即可。
请注意,这不是填充表视图的好方法,因为它会阻止单元格被重用。更好的方法是在数组中保存单元格(纯UIViews)的内容,并在返回单元格之前将它们作为子项添加到单元格的内容视图中。这将允许细胞再利用,这对于良好的性能是至关重要的。如果屏幕上没有更多的单元格,则不必担心重复使用它们。