我的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];
}
非常感谢您的帮助和建议!
答案 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)
您正在寻找的是一种在多个应用会话中保留用户数据的方法。这可以通过多种不同的方式完成:
由于你提供的代码看起来很简单,或许可以使用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];
}