我在自定义 UITableViewCell 上有一个 UIButton,我有一个方法“完成”。
如何通过 Button 获取 CustomTableViewCell?
-(IBAction)done:(id)sender {
(CustmCell((UIButton)sender).viewTheButtonIsOn...).action
}
我在自定义 UITableViewCell 上有一个 UIButton,我有一个方法“完成”。
如何通过 Button 获取 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];
}
另一种方法是创建具有 CustomCell 属性的 UIButton 的子类,以直接访问 CustomCell 对象。这在技术上比寻找超级视图的超级视图更好。
您还必须考虑 contentView,或者按钮现在或将来可能包含的单元格的任何其他子视图。安全并遍历父层次结构。
var parent = button.superview
while let v = parent where !v.isKindOfClass(MyCustomCell) {
parent = v.superview
}
// parent is now your MyCustomeCell object