我在单元格中有按钮,它有一个到自定义单元格的出口,它在我的第一个视图控制器中有一个 IBAction:
-(IBAction)AddButton:(UIButton *)sender{
ProductCell *cell = (ProductCell *)sender.superview;
UITableView *tableView - (UITableView *)cell.superview;
NSIndexPath *indexPath = [tableView indexPathForCell:cell];
NSLog(@"Sender: %@, Super: %@", sender, sender.superview);
//[saveitemArray addObject: [itemArray objectAtIndex:(indexPath.row + 1)]];
//[saveitemArray writeToFile:[self saveListPath] atomically:YES];
}
单步执行代码显示发送方为 UIButton,但变量“单元格”为 FirstViewController。似乎只是完全跳过了单元格和表格。我错过了什么简单的事情?
更新:
好的,所以我已经向您展示了完整的 IBAction,在注释掉最后两行之后,我的单元格变量显示为 CustomCell(正确的超级视图),但现在我的 tableView 变量显示的是 FirstViewController 超级视图而不是 CustomTable?您的 NSLog 显示相同,因此我将其更改为显示 cell 和 cell.superview。结果如下:
Sender: <UITableViewCellContentView: 0x716fb20; frame = (0 0; 320 43);
gestureRecognizers = <NSArray: 0x71711d0>; layer = <CALayer: 0x716fbd0>>, Super:
<ProductCell: 0x716f820; baseClass = UITableViewCell; frame = (0 0; 320 44); autoresize
= W; layer = <CALayer: 0x716f990>>
第二次更新:
似乎认为 sender.superview 是 CellContentView 而不是 Cell 本身,因此当我尝试获取 indexPath 时,它会尝试将单元格用作表格并将 CellContentView 用作单元格。我认为没有必要通过 ContentView,我认为按钮中的 .superview 会直接进入单元格本身?
回答:
似乎您必须按此顺序遍历层次结构。
按钮 -> CellContentView -> 单元格 -> TableView