使用AKPickerView保存选择

时间:2015-01-04 23:25:25

标签: ios uitableview tableview nsuserdefaults picker

项目设计

我的左抽屉有一个表选择,有很多选项。其中一个是设置选项。

设置选项内部是表格视图。我在一次细胞中嵌入了AKPickerView。 AKPickerView让我可以选择用户想要在整个应用程序中使用哪种动画。

正确显示所有内容,但是,选择动画并重新打开设置视图时,选择器会自行重置。

以下是它的设置方式。

的cellForRowAtIndexPath:

            //Animation Picker
            self.pickerView = [[AKPickerView alloc] initWithFrame:cell.bounds];
            self.pickerView.delegate = self;
            self.pickerView.dataSource = self;
            self.pickerView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
            [cell addSubview:self.pickerView];

            self.pickerView.font = [UIFont fontWithName:@"HelveticaNeue-Light" size:20];
            self.pickerView.highlightedFont = [UIFont fontWithName:@"HelveticaNeue" size:20];
            self.pickerView.interitemSpacing = 25.0;
            self.pickerView.fisheyeFactor = 0.0002;
            self.pickerView.pickerViewStyle = AKPickerViewStyle3D;

            zoom = @"Zoom Out";
            drop = @"Drop In";
            push = @"Push";

            self.titles = @[zoom, drop, push];

            [self.pickerView reloadData];

Count,title和didSelect:

- (NSUInteger)numberOfItemsInPickerView:(AKPickerView *)pickerView {
    return [self.titles count];
}

- (NSString *)pickerView:(AKPickerView *)pickerView titleForItem:(NSInteger)item {
    return self.titles[item];
}

- (void)pickerView:(AKPickerView *)pickerView didSelectItem:(NSInteger)item {

    if ([self.titles[item] isEqual:zoom]) {
        [[NSUserDefaults standardUserDefaults] setObject:@"Zoom Out" forKey:@"Zoom"];
        [[NSUserDefaults standardUserDefaults] synchronize];
    }

    else if ([self.titles[item] isEqual:drop]) {
        [[NSUserDefaults standardUserDefaults] setObject:@"Drop In" forKey:@"Drop"];
        [[NSUserDefaults standardUserDefaults] synchronize];
    }

    else if ([self.titles[item] isEqual:push]) {
        [[NSUserDefaults standardUserDefaults] setObject:@"Push" forKey:@"Push"];
        [[NSUserDefaults standardUserDefaults] synchronize];
    }

    NSLog(@"%@", self.titles[item]);
}

如何让选择器保存滚动位置或保存所选项目,所以当我重新打开视图时它保持不变?

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:2)

如果您希望数据在使用应用程序时保持静止,并且当您关闭它时无关紧要,您应该使用持久性(iOS: Saving a double picker's settings (data persistence))。但是如果你想让它保留(数据),无论你应该使用核心数据。

答案 1 :(得分:0)

感谢开发人员,我设法使用以下代码:

我必须做的是将其移至viewDidLoad:

//Picker Titles
zoom = @"Zoom Out";
drop = @"Drop In";
push = @"Push";
self.titles = @[zoom, drop, push];

的cellForRowAtIndexPath:

[self.pickerView selectItem:[[NSUserDefaults standardUserDefaults] integerForKey:kAnimationTypeKey] animated:false];

和(AKPickerView *)pickerView didSelectItem:

[[NSUserDefaults standardUserDefaults] setInteger:item forKey:kAnimationTypeKey];

这让我重新加载视图并保留所选项目......到目前为止:)

现在我只需要弄清楚每个键如何正确保存用户默认值。