有时我们需要点击自定义的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];
本文介绍了在iOS7中从自定义的UITableViewCell上的按钮触发事件并获取对应的NSIndexPath的方法。由于iOS7引入了UITableViewWrapperView,原本的方法不再适用,文中详细解释了如何调整代码以正确获取行索引。
1万+

被折叠的 条评论
为什么被折叠?



