如何确定正在编辑 UITableView 中的哪个节标题

Posted

技术标签:

【中文标题】如何确定正在编辑 UITableView 中的哪个节标题【英文标题】:How to determine which section header in UITableView is being edited 【发布时间】:2012-03-03 09:30:43 【问题描述】:

我在自定义部分标题中有一个 UITextField。有多个部分使用这种样式的标题,因此有多个 UITextField。

我已经实现了 UITextFieldDelegate。当我编辑其中一个 UITextField 时,它会调用委托方法 textFieldDidEndEditing。如何确定此 UITextField 位于哪个节标题?我需要将该值保存到该部分相应 NSManagedObject 中的核心数据中。

在此先感谢

编辑:有几个人建议在创建单元格时使用节号标签,这样可以完美运行。但是,我已经为 UITextField 分配了一个标签,以将其区分为“标题”文本字段,而不是单元格文本字段或“页脚”文本字段。这张桌子上有很多文本字段!

进一步编辑:建议在 indexPath 中使用。如果我能让它工作,这将是我的首选解决方案。有谁知道页眉和页脚是否有 indexPaths?

【问题讨论】:

【参考方案1】:

您可以使用标签来识别UITextField 实例。由于您已经在 UITextField 实例中设置标签,因此请在剖面视图本身上设置标签:

- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section

  UIView *sectionView = ... // your section view instance

  // assign the section index as the tag
  sectionView.tag = section; 

  return sectionView;

在文本字段委托中,从发送者的父级获取部分索引:

- (void) textFieldDidEndEditing:(UITextField *)textField; 

  NSInteger theSectionIndex = textField.superview.tag;
  // your custom logic here

【讨论】:

你说得对,这会奏效。但是,我应该提到,我已经为 分配了一个标签,以将其与表格单元格中的其他 uitextfields 区分开来。 更新了我的答案。在 sectionView 上设置标签(假设你没有使用它)。【参考方案2】:

您可能想查看 UITableView 方法 indexPathForCell:。

您可以通过 UITextField 中的视图层次结构获取单元格,因为它位于单元格的 contentView 中。

问候,

斯文。

【讨论】:

页眉和页脚是否有 indexPaths?如果他们这样做,就会这样做,但我认为只有细胞有它们。 他们没有。对不起,我误读了您提到标题的问题部分。【参考方案3】:

这很简单,本·汤普森先生。您在每个 UITextFields 之间命名不同,对吗?只需通过使用它的名称找到特定的 UITextField。

-(void) textFieldDidEndEditing:(UITextField *)textField

    if (textField == textfieldOne) 
    
        //Do whatever you want...
    
    else if (textField == textfieldTwo)
    
        //Do whatever you want...
    
    else if (textField == textfieldThree)
    
        //Do whatever you want...
    

希望对你有所帮助。谢谢。

【讨论】:

由于单元格是在运行时以编程方式创建的,因此它们都是同一单元格的所有实例,因此具有相同的名称。否则是个好建议!【参考方案4】:

我相信您将该字段作为自定义视图添加到 tableviewviewForHeader 方法的标题中。

我建议使用这样的部分保留字段的标签。

textfield.tag == section;

然后在委托消息中,您可以使用 switch 方法来比较标签..并在那里编写自己的代码

【讨论】:

我应该提到,我在同一个页面上有很多其他 UITextFields 都有不同的标签。我已经为单元格分配了一个标签,以确定它是一个“标题”文本字段。所以我不认为我可以使用标签。 编辑您的问题并添加将标签添加到文本字段的代码...为行添加整个单元格部分。也用于标题视图..

以上是关于如何确定正在编辑 UITableView 中的哪个节标题的主要内容,如果未能解决你的问题,请参考以下文章

textViewDidBeginEditing - 确定正在编辑哪个文本框

如何检查 UITableView 中的选定行属于哪个组/部分

如何确定是不是正在拖动 UITableViewCell?

如何实现一个可编辑的 UITableView,类似于 Safari 书签?

如何操作 UITableView 以根据标题编辑单元格?

如何在编辑模式下确定 UITableViewCell 的删除按钮的原点 (x,y)?