ios - 如何在 Objective C 中访问父对象

标签 ios objective-c uitableview

我正在创建一个带有 UITextfield 的自定义 UITableViewCell,我想知道如何从 UITextField 委托(delegate) didend 访问自定义 UItableViewCell?

我正在尝试这个

- (void)textFieldDidEndEditing:(UITextField *)textField {
    CustomFinishingCell *updateCell = (CustomFinishingCell *)textField.superview;

但这并没有返回 UITableViewCell,我认为它返回的是 UItableScrollView 或类似的东西。

最佳答案

textField 的 super View 实际上是单元格的 contentView。您可能可以通过以下方式获取单元格:

CustomFinishingCell *updateCell = (CustomFinishingCell *)textField.superview.superview;

虽然这有点笨拙。

我也不建议使用标签,因为它更笨重。

我会做的是创建一个 UITextField 的子类,为您的 CustomFinishingCell 设置一个属性,并在创建单元格时设置它(您添加 UITextField 的地方)。这将确保一切正常工作,即使用户重新使用单元格、添加/删除单元格等,并且可以很好地重复使用单元格。

更新:

在很多情况下,实际使用@TimReddy 的答案并将 UITextFielddelegate 设置为 CustomFinishingCell 会更好并将 - (void)textFieldDidEndEditing:(UITextField *)textField 等代码移动到该子类。这将使您不必为 UITextField 创建另一个子类。

关于ios - 如何在 Objective C 中访问父对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22123540/

相关文章:

ios - UITextView 字体为零

iphone - xcode 中架构 armv7 的 undefined symbol

iphone - 有没有办法让文本字段条目必须是电子邮件? (在 xcode 中)

ios - 应用间录音时点击

objective-c - 带有文本附件和截断的属性字符串

ios - Uiwebview 使用 Swift 隐藏/显示 UInavigationbar

ios - 我可以检测到导致 "applicationWillResignActive"调用的原因吗?

ios - 将搜索栏添加到 UITableView 的顶部

uitableview - 为什么 tableview 委托(delegate)不起作用?

ios - UITableViewCell 中所有自动布局约束的缩进