• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

iOS:保存双重选择器的设置(数据持久性)

[复制链接]
菜鸟教程小白 发表于 2022-12-12 13:23:19 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

所以我有一个双选择器,用户将每个轮子设置为他们想要的,然后按下一个按钮,该按钮将显示他们的选择。易于清洁和简单,但我想存储该数据以备后用,以便在他们关闭应用程序并重新打开后它不会消失。现在,我知道如何使用 datePicker,但不是 doublePicker。所以我的问题是如何调整我的代码,将 datePickers 信息保存和检索到 doublePicker 中?

这是我的 datePicker 代码:

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

// Pulling the date out of my picker
NSDate *selectedDate = [self.datePicker date];

[defaults setObject:selectedDate forKey"DatePickerViewController.selectedDate"];

然后再次检索它:

    - (void)viewDidLoad
{
    [super viewDidLoad];

    // Get the date. I'm going to use a little shorthand instead of creating 
    // a variable for the instance of `NSUserDefaults`.
    NSDate *storedDate = [[NSUserDefaults standardUserDefaults] objectForKey"DatePickerViewController.selectedDate"];

    // Setting the date on the date picker. I'm passing `NO` to `animated:` 
    // because I'm performing this before the view is on screen, but after
    // it has been loaded.
    [self.datePicker setDate:storedDate animated:NO];
}

任何帮助将不胜感激,谢谢



Best Answer-推荐答案


在您的 UIPickerViewDelegate 中:

        - (void)pickerViewUIPickerView *)pickerView didSelectRowNSInteger)row inComponentNSInteger)component
{
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    [defaults setInteger:row forKey:[NSString stringWithFormat"DoublePickerViewController.%i", component]];
}

要取出数据:

        for (int i = 0; i < doublePicker.numberOfComponents; i++) {
        NSInteger *storedInteger = [[NSUserDefaults standardUserDefaults] integerForKey:[NSString stringWithFormat"DoublePickerViewController.%i", i];
[doublePicker selectRow:storedInteger inComponent:i animated:NO];
    }

用于存储多个值:

在您的 UIPickerViewDelegate 中:

- (void)pickerViewUIPickerView *)pickerView didSelectRowNSInteger)row inComponentNSInteger)component

{
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    NSArray *oldArray = [defaults arrayForKey:[NSString      stringWithFormat"DoublePickerViewController.%i", component]];

    //Make a mutable version so we can change it
    NSMutableArray *newArray = [oldArray mutableCopy];
    if (!newArray) {
        newArray = [NSMutableArray array];
    }
    //Add The Latest Row To The end of the array. We wrap it in an NSNumber so it can be in an array
    [newArray addObject:[NSNumber numberWithInteger:row]];

    //If you want to have a limit on the amount of values that can be stored then use this
    int maxValues = 5;
    if (newArray.count >= maxValues) {
        //Remove the oldest object
        [newArray removeObjectAtIndex:0];
    }
    [defaults setObject:newArray forKey:[NSString      stringWithFormat"DoublePickerViewController.%i", component]];
}

要取出数据:

        for (int i = 0; i < doublePicker.numberOfComponents; i++) {
        NSArray *storedIntegers = [[NSUserDefaults standardUserDefaults] arrayForKey:   [NSString stringWithFormat"DoublePickerViewController.%i", i];
        //I don't know what values you want, but to get an int out of the array:
        //int integer = [(NSNumber *)[storedIntegers objectAtIndex:0] intValue];
        //And to set the row for a component:
        //[doublePicker selectRow:storedInteger inComponent:i animated:NO];
    }

关于iOS:保存双重选择器的设置(数据持久性),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18112748/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap