首页 > 代码库 > UITableViewCell中添加多个UIButton实例
UITableViewCell中添加多个UIButton实例
在项目中又遇到坑了.UITableViewCell中添加了2个UIButton.点击事件添加在Cell中.cell设置代理,TableViewController类接受代理,并执行相应的方法.根据superView 找到cell,根据cell找到相应的indexpath.
贴代码:
- (void)editItem:(UIButton *)sender{ UITableViewCell * cell = (UITableViewCell *)[[[sender superview] superview] superview]; NSIndexPath * indexPath = [self.tableView indexPathForCell:cell]; NSLog(@"index row %d", [indexPath row]); ......}
以上方法只有iOS7能用.iOS8得去掉一个superview,如下图:
- (void)editItem:(UIButton *)sender{ UITableViewCell * cell = (UITableViewCell *)[[sender superview] superview]; NSIndexPath * indexPath = [self.tableView indexPathForCell:cell]; NSLog(@"index row %d", [indexPath row]); ......}
坑啊....我怎么知道iOS8哪个版本去掉的视图?
不过还好.问了朋友,推荐用响应者链.
- (UITableViewCell *)tableViewCellForbutton:(UIButton *)button{ for (UIView *next = [button superview] ; next; next = next.superview) { UIResponder *nextResponder = [next nextResponder]; if ([nextResponder isKindOfClass:[UITableViewCell class]]) { return (UITableViewCell*)nextResponder; } } return nil;}
//在代理方法中写入如下内容,即可完美找到cell.
- (void)editItem:(UIButton *)sender{ UITableViewCell * cell = [self tableViewCellForbutton:sender]; NSIndexPath * indexPath = [self.tableView indexPathForCell:cell]; NSLog(@"index row %d", [indexPath row]); .......}
以上方法都是纯代码的方法,StoryBoard(SB)和XIB的方式,还没试过.目前朋友试过SB的方法可以用2个superview找到cell,不被iOS的版本所限制.
UITableViewCell中添加多个UIButton实例
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。