如何将UITextField默认值设置为用户以前的输入?

时间:2014-06-18 17:28:55

标签: ios objective-c uitextfield default-value

我的iOS应用程序以弹出消息(UIAlertView)开始,您必须在UITextField中输入文本。我希望UITextField的默认值等于用户以前的输入。

示例:在下午1点,用户输入" Happy"并单击确定。当他在下午2点重新打开应用程序时,文本字段已经有了#34; Happy"作为默认值,他只需要单击“确定”。下午3点,他打开应用程序,默认值为" Happy"但他将其更改为"愤怒",然后单击确定。下午4点,"愤怒"是他打开应用程序时的默认值。

- (void)viewDidLoad
{
[super viewDidLoad];

//Pop-up TextField
UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"Hello" message:@"How are you feeling ?" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
alert.alertViewStyle = UIAlertViewStylePlainTextInput;
UITextField * machineTextFieldInit = [alert textFieldAtIndex:0];
machineTextFieldInit.placeholder = @"Mood";
[alert show];
}

非常感谢您的帮助和建议!

2 个答案:

答案 0 :(得分:0)

我能想到的最简单的答案是将前一个值存储在类属性中,然后当用户单击取消时,将值存储到其属性中

@property NSString *previousValue;


- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
    if (buttonIndex == [alertView cancelButtonIndex]){
        previousText = machineTextFieldInit.text;
    }
}

然后在你的alertview测试字段集的初始化

machineTextFiledInit.text = previousValue;

尚未测试,可能有更简单的方法:)

另外,不要忘记将previousValue设置为用户第一次点击时的默认值。

编辑:如果您希望它存储它通过应用程序的结束

-(void)encodeRestorableStateWithCoder:(NSCoder *)coder
{
    [coder encodeObject:previousValue forKey:@"previousVal"];

}

-(void)decodeRestorableStateWithCoder:(NSCoder *)coder
{
    previousValue = [coder decodeObjectForKey@"previousVal"];
}

答案 1 :(得分:0)

您正在寻找的是一种在多个应用会话中保留用户数据的方法。这可以通过多种不同的方式完成:

  • 核心数据
  • 用户默认值
  • Plist文件
  • 外部服务器

由于你提供的代码看起来很简单,或许可以使用NSUserDefaults

要在NSUserDefaults中存储值,请在用户按下按钮时使用此代码:

- (void) alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    UITextField * machineTextField = [alertView textFieldAtIndex:0];
    NSString * input = machineTextField.text;
    if (input != nil)
    {
        NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
        [defaults setObject:input forKey:@"my.app.domain.machineTextField"];
        [defaults synchronize];
    }
}

当您显示对话框时,请加载默认值。

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSString * previous = [defaults objectForKey:@"my.app.domain.machineTextField"];

    //Pop-up TextField
    UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"Hello" message:@"How are you feeling ?" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
    alert.alertViewStyle = UIAlertViewStylePlainTextInput;
    UITextField * machineTextFieldInit = [alert textFieldAtIndex:0];
    machineTextFieldInit.placeholder = previous ? previous : @"Mood";
    [alert show];
}