项目设计
我的左抽屉有一个表选择,有很多选项。其中一个是设置选项。
设置选项内部是表格视图。我在一次细胞中嵌入了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]);
}
如何让选择器保存滚动位置或保存所选项目,所以当我重新打开视图时它保持不变?
任何帮助都将不胜感激。
答案 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];
这让我重新加载视图并保留所选项目......到目前为止:)
现在我只需要弄清楚每个键如何正确保存用户默认值。