経緯
iOS5,6でつくっていたアプリでiOS7のときだけcellに設置したボタンのindexが取得できなくなっていた。
元々の実装
superviewを決め打ちだった。
UITableViewCell *cell = (UITableViewCell *) [[[(UIButton *) sender superview] superview] superview];
改修
while文ぶん回して解決
- (void)pushButtonOnCell:(id)sender
{
UIView *view = [(UIButton *) sender superview];
while (![view isKindOfClass:[UITableViewCell class]]) {
view = [view superview];
}
UITableViewCell *cell = (UITableViewCell *)view;
int row = [self.calendarTable indexPathForCell:cell].row;
NSLog(@"row = %d", row);
}