繁体   English   中英

UITableView单元格IndexPath

[英]UITableView Cell IndexPath

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

谢谢。

编辑

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

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

如果尚未在viewDidLoad设置scrollToRowAtIndexPath:atScrollPosition:animated: ,则可以将其放入viewWillAppear方法中。 无论如何,如果视图在加载后可以出现多次(例如,当模态视图控制器调用辞职时),那么这是一个更好的地方。

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

如果您进一步解释您希望此属性的用途,也许会有所帮助? 您要如何处理viewDidLoad单元格的位置?

试试这个

    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];

在我看来,就像您回答了自己的问题:您做不到。 因为执行viewDidLoad时该单元格没有indexPath。 而且实际上,它也不会再有一个,因为如果您使用单元出队(很好的话!),那么可以在十分之一秒内将同一单元重新用于另一个索引。

编辑:好的,我想我知道了您想要的是什么:将单元格交给tableView时,您自己将indexPath保存到了某个地方。 注意:如果不这样做,则无法真正知道特定单元格放置在哪个indexPath上,至少如果您以应有的方式运行,则至少是这样。

因此,您可以做的就是简单地在viewDidLoad方法中创建所有单元格,将它们存储在数组中,然后,当表视图要求它们时,只需将它们从该数组移交给他们。

请注意,这不是填充表格视图的好方法,因为它阻止了单元的重用。 更好的方法是将单元格的内容 (纯UIViews)保存在数组中,并将其作为子级添加到单元格的内容视图中,然后再返回该单元格。 这将允许单元重用,这对于良好的性能至关重要。 如果您没有比屏幕显示更多的单元格,则不必担心重复使用它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM