当Next按钮将Segue调用到Next Scene时,保存UITextField数据(User Inputted)

时间:2013-02-25 18:54:05

标签: ios uitextfield segue

iOS6的

我在一个场景中有6个UITextFields,下一个按钮可以进入下一个场景。

当我按下键盘上的“完成”按钮时,下面的代码效果很好:

- (IBAction)dismissKeyboard:(id)sender
{
    if (sender == LocationName) {
    self.meeting.LocationName = LocationName.text;
    }

    if (sender == LocationAddress) {
    self.meeting.LocationAddress = LocationAddress.text;
    }

    if (sender == LocationCity) {
    self.meeting.LocationCity = LocationCity.text;
    }

//I have 3 more text fields after and then I persist to CoreData:

    NSError *error = nil;
    if (![managedObjectContext save:&error]) {
    }

    [sender endEditing:YES];
}

如果用户点击键盘上的完成按钮,则数据保存正常。

但是,如果用户点击导航栏上的“下一步”按钮,而没有首先按下键盘上的“完成”按钮,则在UITextfield内键入的用户不会保存。我希望当用户点击导航栏上的下一个按钮以调用下一个场景时,保存所有字段中用户输入的数据(用户从键盘输入的数据)。

我有下面按钮的以下代码:

- (IBAction)nextButtonPressed:(id)sender {

    [self dismissKeyboard:sender];
}

我知道nextButtonPressed的代码是错误的。我想我需要帮助识别哪个UITextField称为键盘是可见的,然后通过将Sender作为参数调用来调用dismissKeyboard。

由于

1 个答案:

答案 0 :(得分:1)

利用UITextField委托方法textFieldDidEndEditing:来了解焦点何时离开文本字段。这是您应该保存其数据的时间。当焦点移动到另一个文本字段或键盘完全被解除时,将调用此方法。

nextButtonPressed:的实施只需在下一个文本字段中调用becomeFirstResponder即可。而已。通过将另一个文本字段作为第一个响应者,前一个响应者将调用其textFieldDidEndEditing:委托。

更新

// This assumes the LocationXXX are instance variables referencing the UITextFields
- (IBAction)nextButtonPressed:(id)sender {
    if (sender == LocationName) {
        [LocationAddress becomeFirstResponder];
    } else if (sender == LocationAddress) {
        [LocationCity becomeFirstResponder];
    // add the rest as needed
    }
}