Objective c 从“获取UITableviewCell位置”;可见的;区域或窗口

Objective c 从“获取UITableviewCell位置”;可见的;区域或窗口,objective-c,uitableview,position,cell,Objective C,Uitableview,Position,Cell,我创建了一个基于uitableview和uitabbar的iPhone应用程序。在tableview的每个单元格上,我都有一个“添加到收藏夹按钮”。 当我按下这个按钮时,我想让单元格从她的位置“跳转”到选项卡栏中最喜欢的项目(与installous中的下载效果相同) 如果我在前10个单元格中,效果会很好,但是如果我在tableView中滚动,效果会不好,因为开始位置是根据uitableview大小计算的 从可见区域可以知道细胞的位置 例如:第四十个单元格的位置是x:0,y:1600,w:320,

我创建了一个基于uitableview和uitabbar的iPhone应用程序。在tableview的每个单元格上,我都有一个“添加到收藏夹按钮”。 当我按下这个按钮时,我想让单元格从她的位置“跳转”到选项卡栏中最喜欢的项目(与installous中的下载效果相同)

如果我在前10个单元格中,效果会很好,但是如果我在tableView中滚动,效果会不好,因为开始位置是根据uitableview大小计算的

从可见区域可以知道细胞的位置


例如:第四十个单元格的位置是x:0,y:1600,w:320,y:50,我想要屏幕顶部的位置,而不是uiview顶部的位置,所以类似这样的x:0,y:230,w:320,y:50,是的,你可以使用
rectforrowatinexpath:
你只需要传入你点击的行的indexPath

rectforrowatinexpath:

返回行的绘图区域 由索引路径标识

编辑

转换:

CGRect rectInTableView = [tableView rectForRowAtIndexPath:indexPath];
CGRect rectInSuperview = [tableView convertRect:rectInTableView toView:[tableView superview]]; 

下面是我使用的代码:(我确信它可以优化):

首先将nsindepath**属性添加到自定义单元格。
*在tableview控制器中实现此功能:*


是的,这是可能的

-(void)click:(id)sender
{
    int clickcelltag;
    clickcelltag=sender.tag;

    NSIndexPath *index =[NSIndexPath indexPathForRow:clickcelltag inSection:0];

    [userreviewtblview scrollToRowAtIndexPath:index atScrollPosition:UITableViewScrollPositionTop animated:YES];//userreviewtblview is a UITableView name
}

希望这对您有所帮助:-)

对于20个单元格的RectForRowAtIndexPath,请将x:0,y:1200返回给我,我想要视图顶部的位置(从状态栏),因此它应该介于20到大约367之间(视图大小)@Benjamin Frolicher抱歉,我已更新了我的答案,缺少转换。谢谢Nick,避免了我尝试做一些古怪的数学运算,添加所有tableview组件以获得选定的行位置。谢谢你到处寻找这个。
-(void)click:(id)sender
{
    int clickcelltag;
    clickcelltag=sender.tag;

    NSIndexPath *index =[NSIndexPath indexPathForRow:clickcelltag inSection:0];

    [userreviewtblview scrollToRowAtIndexPath:index atScrollPosition:UITableViewScrollPositionTop animated:YES];//userreviewtblview is a UITableView name
}