-1

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

- (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];
}
4

3 回答 3

0

您需要为滚动视图设置一个委托并实施scrollViewDidEndDecelerating:scrollViewDidScroll:检查 contentOffset 以查看您是否更改了页面。

如果此时您检测到您更改了页面,那么您可以做任何您需要做的事情

于 2013-02-04T16:30:07.573 回答
0

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

与滚动视图委托一起实现,您可以实现这一点

于 2013-02-04T16:30:08.917 回答
-1

为每个 UITextField 创建一个 ViewController 似乎不是很有用。如果我正确理解了你的问题,你只需要 UIViewController 实例。在 viewController 实例的 view 属性上添加 UITextField 对象(覆盖 viewDidLoad 方法或在 Interfacebuilder 中添加它们。如果您的部署目标 iOS 6 实现 viewDidDisapear: 方法并使用上面的 NSUserDefaults 代码覆盖该方法。如果您的部署比 iOS 6 更旧的版本可以覆盖 viewDidUnload 方法。

于 2013-02-04T16:42:38.077 回答