iOS开发- 根据表格点击tableviewCell获取在当前屏幕中的坐标值

在使用 UITableViewCell  的frame属性获取origin得到的坐标是不变的.


也就是说如果UITableView初始化完毕后,每个cell的坐标是固定的,x不变,y 随index递增的.


经过测试发现,任何一个cell拖拽或则滑动到UITableView的任意相对位置,cell的frame属性都没有改变.


那怎样获取UITableViewCell相对于UITableView的坐标?


google中 http://stackoverflow.com/questions/687793/determine-coordinates-of-a-uitableviewcell-while-scrolling


得出,使用

[objc]  view plain  copy
  1. CGRect rectInTableView = [tableView rectForRowAtIndexPath:indexPath];   
  2.    
  3.   
  4. CGRect rect = [tableView convertRect:rectInTableView toView:[tableView superview]];   
即可完成当前cell在屏幕中的坐标值
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现删除成功后让 `CreateOutboundViewController` 的按钮显示,你可以在 `CreateOutboundDeletePopupView` 添加一个代理方法,并在 `CreateOutboundViewController` 实现这个代理方法。当从 `CreateOutboundDeletePopupView` 删除成功后,就可以调用 `CreateOutboundViewController` 的代理方法,来更新 `CreateOutboundViewController` 的按钮状态。 具体的实现步骤如下: 1. 在 `CreateOutboundDeletePopupView` 添加一个代理方法,例如: ``` @protocol CreateOutboundDeletePopupViewDelegate <NSObject> - (void)outboundRecordDeleted; @end @interface CreateOutboundDeletePopupView : UIView @property (nonatomic, weak) id<CreateOutboundDeletePopupViewDelegate> delegate; // ... @end ``` 2. 在 `CreateOutboundDeletePopupView` ,在成功删除后调用代理方法: ``` if (deleteSuccess) { [self.delegate outboundRecordDeleted]; } ``` 3. 在 `CreateOutboundViewController` 实现代理方法: ``` @interface CreateOutboundViewController () <CreateOutboundDeletePopupViewDelegate> // ... @end @implementation CreateOutboundViewController - (void)outboundRecordDeleted { // 更新按钮状态 [self.tableView reloadData]; // 关闭弹窗 [self.popupView dismiss]; } // ... @end ``` 4. 将 `CreateOutboundViewController` 对象设置为 `CreateOutboundDeletePopupView` 的代理: ``` CreateOutboundDeletePopupView *popupView = [[CreateOutboundDeletePopupView alloc] init]; popupView.delegate = self; ``` 5. 在 `CreateOutboundViewController` 的 `cellForRowAtIndexPath` 方法更新按钮状态: ``` - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { // ... UIButton *deleteButton = [cell viewWithTag:1]; deleteButton.hidden = outboundRecord.deleted; // ... } ``` 注意,如果你的 `CreateOutboundViewController` 的数据源是从后台获取的,那么你在成功删除后,还需要向后台重新请求数据并刷新表格,以确保表格数据与后台同步。关于代码放在哪个文件,以上实现是在 `CreateOutboundViewController` 和 `CreateOutboundDeletePopupView` 两个文件实现的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值