如何通过Button获取UITableViewCell
发现一个奇怪的问题:
手机(ios7)
2015-06-17 15:11:29.323 ***[1412:60b] [btn superview] = UITableViewCellContentView
2015-06-17 15:11:29.324 ***[1412:60b] [[[btn superview]superview]class] = UITableViewCellScrollView
模拟器:ios8
2015-06-17 15:12:54.614 MyQ[7862:125756] [btn superview] = UITableViewCellContentView
2015-06-17 15:12:54.614 MyQ[7862:125756] [[[btn superview]superview]class] = EditTableViewCell
百度了一下发现:
http://www.cocoachina.com/bbs/read.php?tid=232335
提供的方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 | OffLineTableViewCell *cell = nil ; if (IsIOS7) { UIView *view = [btn superview]; UIView *view2; if (IsIOS8) { view2 = view; } else { view2 = [view superview]; } cell = (OffLineTableViewCell *)[view2 superview]; } else { cell = (OffLineTableViewCell *)[btn superview]; } |
果然太麻烦,弃用,换成现在这个,亲测可用。。。
这个方法真的是太靠谱了,这样还省了我要在TableViewCell中定义delegate。太赞!
还有一个支持这个方法的原因:如果删除tableviewcell中的某个数据后,再点btn可能会出现数组越界的情况。
-(void)cellBtnClicked:(id)sender event:(id)event
{
NSSet *touches = [event allTouches];
UITouch *touch = [touches anyObject];
CGPoint currentTouchPosition = [touch locationInView:favTableView];
NSIndexPath *indexPath =[favTableView indexPathForRowAtPoint:currentTouchPosition];
if (indexPath!=nil) {
ProfileViewController *profile = [[ProfileViewController alloc]init];
profile.empInfo = empSearchResultArray[indexPath.row]; //error
[self.navigationController pushViewController:profile animated:YES];
RootViewController *rootVC = (RootViewController *) self.tabBarController;
[rootVC showTabBar:NO];
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!