每次用户滚动时保存UITextField

时间:2013-02-04 16:22:28

标签: iphone ios objective-c uiscrollview

我的问题是,我有5个UIViewController,我将所有内容放在一个UIScrollView中。在每个viewcontroller中我有一些UITextField,我需要将文本保存到NSUserDefaults。 我可以使用按钮来完成它,但每次用户滚动到下一个视图时如何保存?(没有任何按钮?) 谢谢.. 这是我用于第一个viewcontroller的工作代码

- (void)save:(id)sender {
    NSString *a_name1 = [name text];
    NSString *a_address = [address text];
    NSString *a_address2 = [address2 text];
    NSString *a_age = [age text]

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:a_name1 forKey:@"name"];
    [defaults setObject:a_address forKey:@"address"];
    [defaults setObject:a_address2 forKey:@"address2"];
    [defaults setObject:a_age forKey:@"age"];
    [defaults synchronize];
}

3 个答案:

答案 0 :(得分:0)

您需要将代理设置为滚动视图并实施scrollViewDidEndDecelerating:scrollViewDidScroll:并检查contentOffset以查看您是否更改了网页。

如果此时您检测到您更改了页面,则可以执行您需要执行的任何操作

答案 1 :(得分:0)

您可以使用scrollview的contentoffset属性查找当前可见视图(或VC)并使用它来执行此过程

与scrollview委托一起实现,你可以实现这个

答案 2 :(得分:-1)

为每个UITextField创建一个ViewController似乎没什么用。如果我正确理解了你的问题,你只需要在UIViewController实例上。在viewController实例的view属性上添加UITextField-objects(覆盖viewDidLoad方法或在Interfacebuilder中添加它们)。 如果您的部署目标iOS 6实现了viewDidDisapear:方法,并使用上面的NSUserDefaults代码覆盖该方法。如果您的部署早于iOS 6,则可以覆盖viewDidUnload方法。