2015-01-04 2 views
1

Project desc.Сохранение выбора с использованием AKPickerView

У меня есть левый ящик с выбором стола со многими вариантами. Один из них - это параметр настроек.

Внутри параметра настроек находится табличный вид. Я встроил 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]; 

Граф, название и 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

Если вы хотите, чтобы данные оставались неподвижными при использовании приложения, а при закрытии это не имеет значения, вы должны использовать стойкость (iOS: Saving a double picker's settings (data persistence)). Но если вы хотите, чтобы он оставался (данные) независимо от того, что вы должны использовать основные данные.

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 сделалSelectItem:

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

Это заставило меня перезагрузить представление и сохранить выбранный элемент ... до сих пор :)

Теперь мне просто нужно выяснить, как правильно сохранить значения по умолчанию для каждого ключа.

Смежные вопросы