我如何确定在包含2个uiTextField的动态创建的UITableCell上哪个textField触发了textFieldDidEndEditing

问题描述 投票:8回答:3

使用情节提要的iOS 6 xcode 4.6.2

嗨,我的问题是这个

我正在使用动态UITableView,它由多个单元格组成,每个单元格上都有两个UITextFields。这两个字段在自定义单元格中定义为

@property (strong, nonatomic) IBOutlet UITextField *lowRangeField;

@property (strong, nonatomic) IBOutlet UITextField *highRangeField;

我希望使用

-(void) textFieldDidEndEditing:(UITextField*) textfield

获取这些值并将其保存到核心数据存储中。

现在,很明显,我可以获取该值并将其分配到我喜欢的位置,因为我有指向textfield的指针。我的问题是我不知道该如何识别cell上的实际字段。我知道我可以获取textfields superview来标识其上的哪个单元格,因此我可以算出它是lowRangeField和highRangeField的哪组,但随后我就被卡住了

我希望这是一件简单的事情,我想念它,因为我有点菜鸟!

感谢您抽出宝贵的时间阅读和回复

欢呼声

Simon

ios uitextfield uitextfielddelegate
3个回答
17
投票

我的问题是我不知道如何识别单元格上实际是哪个字段。

使用标签进行识别。

lowRangeField.tag = 1;
highRangeField.tag = 2;


-(void) textFieldDidEndEditing:(UITextField*) textfield
{
if (textField.tag == 1) {
NSLog(@" clicked in lowRangeField"); 

} else if (textField.tag ==2) {
 NSLog(@" clicked in highRangeField");
}
}

1
投票

尝试此一个

这用于标识您在哪个文本字段中输入了值。

- (void)viewDidLoad
{
    lowRangeField.tag = 100;
    highRangeField.tag = 200;
}

-(void) textFieldDidEndEditing:(UITextField*) textfield
{
     if (textField.tag == 100)
     {
        NSLog(@" clicked On lowRangeField"); 

     } 
     else if (textField.tag ==200) 
     {
         NSLog(@" clicked On highRangeField");
     }
}

0
投票

如果您在ViewController(作为属性)中引用了两个(或更多)字段,则可以按照以下方式对其进行区分:

- (void) textFieldDidEndEditing:(UITextField *)textField {
if (textField==self.lowRangeField)
//do something
if (textField==self.highRangeField)
// do something else
}
© www.soinside.com 2019 - 2024. All rights reserved.