我有一个tableview,它在自定义UITableViewCell中使用UIButton,在我的视图控制器中触发IBAction。在IOS7中,我能够通过执行此UITableViewCell *clickedCell = (UITableViewCell *)[[[sender superview] superview]superview]
来引用触发操作的特定单元格。
这在iOS7中运行良好,但是在iOS8中它需要删除superview
之一以返回单元格,否则返回nil。所以我现在就这样做,并且它有效,但我想知道是否有更清洁的方法来实现它。我只是不喜欢这种样子。
UITableViewCell *clickedCell;
if (SYSTEM_VERSION_LESS_THAN(@"8.0")) {
clickedCell = (UITableViewCell *)[[[sender superview] superview]superview];
}
else{
clickedCell = (UITableViewCell *)[[sender superview]superview];
}
答案 0 :(得分:2)
您可以将UIButton子类化为MYButton并添加如下属性:
@property (nonatomic, weak) UITableViewCell *parentCell;
然后,当您从单元格集parentCell = self
设置UIButton时从那里你可以通过以下方式访问单元格:
MYButton *button = (MYButton *)sender;
clickedCell = sender.parentCell.
确保使用弱属性,这样就不会创建保留周期。