有时我们需要点击自定义的UITableViewCell上的按钮,触发一个事件,要传递那个NSIndexPath过去,使用indexPathForCell来获取当前点击按钮的NSIndexPath。例如
UIButton *senderButton = (UIButton *) sender;
UITableViewCell *buttonCell = (UITableViewCell *) [senderButton superView];
NSUInterger buttonRow = [[self.tableView indexPathForCell:buttonCell] row];
然而在ios7开发时,你会发现这样做buttonRow永远是0;为什么呢?
查询过后知道,在IOS7以下系统,UITableViewCell.superview就是UITableView,但在IOS7中,cell上面还多了一个UITableViewWrapperView,所以需要UITableViewCell.superview.superview获取UITableView
所以第二行应改为
UITableViewCell *buttonCell = (UITableViewCell *) [[senderButton superView] superView];