【问题标题】:Save UITextField everytime user scroll每次用户滚动时保存 UITextField
【发布时间】:2013-02-04 16:22:28
【问题描述】:

我的问题是,我有 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];
}

【问题讨论】:

    标签: iphone ios objective-c uiscrollview


    【解决方案1】:

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

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

    【讨论】:

    • 嗨,谢谢,我使用下面的代码 CGFloat pageWidth = scrollView.frame.size.width; int page = floor((scroller.contentOffset.x - pageWidth / 2) / pageWidth)+1; pager.currentPage = 页; self.title = [NSString stringWithFormat:@"%d",page]; NSLog(@"页面:%@",self.title);
    【解决方案2】:

    您可以使用滚动视图的contentoffset 属性来查找当前可见视图(或VC)并使用它来完成处理

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-25
        • 1970-01-01
        • 1970-01-01
        • 2011-05-31
        相关资源
        最近更新 更多