访问子类别的Superview?

问题描述 投票:0回答:1

我有一个UITableView,它是由我自己的自定义UITableViewCell组成的,它们被子类化为CustomCell。我向该单元格添加一个UITextField,并且在某些事件上运行方法(来自文本字段)。

运行此方法时,我需要访问文本字段是其子视图的CustomCell

所以我想,如何访问文本字段(CustomCell)的父视图?

我已经尝试过,获取文本字段,方法的发送者,然后从中获取其超级视图。

CustomTextField *textField = sender;
    CustomCell *cell = (CustomCell *)[textField superview];

但是这失败了,当我尝试访问单元的属性时,应用程序崩溃了,并且我在控制台中得到了这个信息:[UIView myLabel]: unrecognized selector sent to instance。 (myLabel是我要在单元格上尝试访问的属性。)

为什么不起作用,或者是否有另一种访问该单元格的方法?

iphone objective-c subclass subview superview
1个回答
1
投票
我将通过以下两种方式之一来处理:

    赋予CustomTextField弱引用其包含CustomCell的属性。然后,您可以向文本字段询问其单元格。如果您使用的是xib,请将属性设置为IBOutlet并将其连接到xib中。如果要使用代码创建单元格,请在创建单元格和文本字段时在代码中设置属性。
  1. 遍历视图层次结构以寻找CustomCell祖先。

  2. CustomCell *cell = textField.superview; while (cell && ![cell isKindOfClass:[CustomCell class]]) { cell = [cell superview]; }
© www.soinside.com 2019 - 2024. All rights reserved.