码迷,mamicode.com
首页 > 其他好文 > 详细

UITableViewCell中添加多个UIButton实例

时间:2015-02-04 08:13:50      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:

     在项目中又遇到坑了.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实例

标签:

原文地址:http://www.cnblogs.com/xclidongbo/p/4271478.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!