Ios 访问现有UITableViewCell
这是一个不同的问题,但我认为错的并不是错的,所以我调整了标题,以反映我真正的理解 我正在制作一个动画,它将普通UITableViewCell的cell.imageView中的图像复制到屏幕底部的选项卡栏,以模拟将项目放入购物车。我可以复制图像并将副本作为窗口的子视图放置,但我不知道如何获得原始图像的绝对位置,以便将其放置在顶部作为动画的起点 图像始终显示在屏幕顶部,就像放置在0,0 很抱歉,这个问题太粗鲁了,我肯定我遗漏了一些非常明显的东西 -(void)tableView:(UITableView) *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath) *)索引{Ios 访问现有UITableViewCell,ios,animation,uiview,uitableview,coordinates,Ios,Animation,Uiview,Uitableview,Coordinates,这是一个不同的问题,但我认为错的并不是错的,所以我调整了标题,以反映我真正的理解 我正在制作一个动画,它将普通UITableViewCell的cell.imageView中的图像复制到屏幕底部的选项卡栏,以模拟将项目放入购物车。我可以复制图像并将副本作为窗口的子视图放置,但我不知道如何获得原始图像的绝对位置,以便将其放置在顶部作为动画的起点 图像始终显示在屏幕顶部,就像放置在0,0 很抱歉,这个问题太粗鲁了,我肯定我遗漏了一些非常明显的东西 -(void)tableView:(UITableVi
UITableViewCell *cell = [self tableView:tableView cellForRowAtIndexPath:indexPath];
UIImageView *originalImgView = cell.imageView;
UIImageView *img = [[[UIImageView alloc] initWithImage: cell.imageView.image] autorelease];
NSLog(@"Original %@", originalImgView.bounds); // Shows "Original (null)" at runtime.
NSLog(@"Window Points %@", [self.view.window convertPoint:originalImgView.frame.origin toView:nil]);
NSLog(@"Cell Points: %@", cell.bounds); // Shows "Original (null)" at runtime.
[img setFrame:CGRectMake( originalImgView.bounds.origin.x, originalImgView.bounds.origin.y ,
cell.imageView.image.size.width, cell.imageView.image.size.height)];
[self.view.window addSubview:img];
NSLog(@"Selected Cell: %@", cell); // Shows cell info at run time, works
}
所以我做错了。 我正在用相同的内容制作一个新的单元格,而不是使用当前单元格。我通过在创建单元格时向其添加标记来修复此问题 cell.tag=[indexPath行] 除了当[indexPath row]==0时给我带来了一个问题。所以我加了1000,这个问题就消失了 cell.tag=(1000+[indexPath行] 然后我换了这条线 UITableViewCell*cell=[self-tableView:tableView cellForRowAtIndexPath:indexPath] 与 UITableViewCell*单元格=(UITableViewCell*)[self.tableView视图WithTag:(1000+[indexPath行]
现在,我得到了一个对表视图中已经存在的实际单元格的引用,并且得到了正确的帧值。对于多个部分,这可能会提供更多独特的标记 ([indexPath节]+1)避免与节0相乘 (1000*([indexPath节]+1))给出了1000、2000等步骤 在cellForRowAtIndexPath集合标记中。。。 cell.tag=((1000*([indexPath节]+1))+[indexPath行] 在didSelectRowAtIndexPath中检索它。。。 UITableViewCell*selectedCell=(UITableViewCell*) [PlayTableView视图带标记:((1000*([indexPath节]+1))+[indexPath行] 假设您的列表在每个部分中不超过1000个单元格
这是一个很好的问题,Donk给出了一个非常有用的答案,非常感谢您发布详细信息。我想我知道怎么回事了。当我调用[self tableView:tableView cellForRotAtIndexPath….]时。我没有得到对现有单元格的引用。我从零开始得到一个新的“拷贝”。因此,当我试图获取有关单元格位置的信息时,我实际上得到了单元格副本的位置,而该副本尚未正确布局。我喜欢Donk使用视图标记的想法。当然,这只适用于可见细胞,因为它们是可回收的。但在响应UI事件时,这很好!快速搜索Szudzik的函数:
A>=b?a+a+b:a+b*b代码>其中a,b>=0。在分区和行中弹出,以获取单元格的唯一视图ID。