6

我在自定义 UITableViewCell 上有一个 UIButton,我有一个方法“完成”。

如何通过 Button 获取 CustomTableViewCell?

-(IBAction)done:(id)sender {
    (CustmCell((UIButton)sender).viewTheButtonIsOn...).action
}
4

4 回答 4

12

CodaFi 的答案很可能已经足够了,但它确实假设按钮直接添加到表格单元格中。稍微复杂但更安全的代码可能类似于:

-(IBAction)done:(id)sender {
    UIView *parent = [sender superview];
    while (parent && ![parent isKindOfClass:[CustomCell class]]) {
        parent = parent.superview;
    }

    CustomCell *cell = (CustomCell *)parent;
    [cell someAction];
}
于 2012-12-02T01:16:41.730 回答
5

如果它作为子视图直接添加到单元格中,则可以使用-superview它来获取它的父视图。此外,您需要使用指针进行强制转换,因为对象从不按值获取,仅在 Objective-C 中指向。

-(IBAction)done:(id)sender {
    [(CustmCell*)[(UIButton*)sender superview]someAction];
}
于 2012-12-02T01:06:25.593 回答
2

另一种方法是创建具有 CustomCell 属性的 UIButton 的子类,以直接访问 CustomCell 对象。这在技术上比寻找超级视图的超级视图更好。

于 2012-12-02T01:16:49.833 回答
1

您还必须考虑 contentView,或者按钮现在或将来可能包含的单元格的任何其他子视图。安全并遍历父层次结构。

var parent = button.superview
while let v = parent where !v.isKindOfClass(MyCustomCell)   {
    parent = v.superview
}

// parent is now your MyCustomeCell object
于 2016-03-25T01:04:14.887 回答