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

时间:2012-03-03 09:30:43

标签: iphone objective-c ios uitableview uitextfield

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

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

非常感谢提前

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

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

4 个答案:

答案 0 :(得分: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;
}

在textfield委托中,从发件人的父级获取部分索引:

- (void) textFieldDidEndEditing:(UITextField *)textField; 
{
  NSInteger theSectionIndex = textField.superview.tag;
  // your custom logic here
}

答案 1 :(得分:0)

您可能希望查看UITableView方法indexPathForCell:。

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

此致

斯文。

答案 2 :(得分:0)

Ben Thompson先生非常简单。你在每个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...
    }
}

我希望它会对你有所帮助。感谢。

答案 3 :(得分:0)

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

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

textfield.tag == section;

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