我在自定义的UITableViewCell上有一个UIButton,我有一个名为“done”的方法。
如何通过按钮获取CustomTableViewCell?
-(IBAction)done:(id)sender {
(CustmCell((UIButton)sender).viewTheButtonIsOn...).action
}
我在自定义的UITableViewCell上有一个UIButton,我有一个名为“done”的方法。
如何通过按钮获取CustomTableViewCell?
-(IBAction)done:(id)sender {
(CustmCell((UIButton)sender).viewTheButtonIsOn...).action
}
CodaFi的回答可能已经足够了,但它确实假设按钮直接添加到表格单元格中。稍微复杂一些但更安全的代码可能是:
-(IBAction)done:(id)sender {
UIView *parent = [sender superview];
while (parent && ![parent isKindOfClass:[CustomCell class]]) {
parent = parent.superview;
}
CustomCell *cell = (CustomCell *)parent;
[cell someAction];
}
如果将其直接添加到单元格作为子视图,您可以使用 -superview
来获取其父视图。此外,由于 Objective-C 中的对象永远不会按值传递,只能指向它们,因此需要使用指针进行类型转换。
-(IBAction)done:(id)sender {
[(CustmCell*)[(UIButton*)sender superview]someAction];
}
contentView
中,您将需要两个对superview
的调用。 - rmaddy您还需要考虑contentView以及单元格中任何其他子视图,无论是现在还是将来包含按钮的。为了安全起见,请遍历父级层次结构。
var parent = button.superview
while let v = parent where !v.isKindOfClass(MyCustomCell) {
parent = v.superview
}
// parent is now your MyCustomeCell object