В этом видеоуроке, мы знакомимся с классом UITableViewController и NSUserDefaults для сохранения настроек.
В сторибоард создаем новый контроллер этого класса.
Старый контроллер удаляем. Так же создаем свой класс, наследник от UITableViewController.
Привязываем новый контроллер к новому классу.
Добавляем новые разделы и контролы в контроллер.
Создаем пробреди на контролы:
И добавляем обработчики изменений контролов:
Для того, чтобы клавиатура убиралась с экрана определяем метод делегата который вызывается если нажать Return на клавиатуре
В сторибоард создаем новый контроллер этого класса.
Старый контроллер удаляем. Так же создаем свой класс, наследник от UITableViewController.
Привязываем новый контроллер к новому классу.
Добавляем новые разделы и контролы в контроллер.
Создаем пробреди на контролы:
@property (weak, nonatomic) IBOutlet UITextField *loginField;
@property (weak, nonatomic) IBOutlet UITextField *passwordField;
@property (weak, nonatomic) IBOutlet UISegmentedControl *levelSegmentControl;
@property (weak, nonatomic) IBOutlet UISwitch *shadowSwitch;
@property (weak, nonatomic) IBOutlet UISegmentedControl *detalizationSegmentControl;
@property (weak, nonatomic) IBOutlet UISlider *soundSlider;
@property (weak, nonatomic) IBOutlet UISlider *musicSlider;
И добавляем обработчики изменений контролов:
- (IBAction)actionTextChange:(UITextField *)sender {
[self saveSettings];
}
- (IBAction)actionValueChange:(id)sender {
[self saveSettings];
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField{
if ([textField isEqual:self.loginField]) {
[self.passwordField becomeFirstResponder];
}
else{
[textField resignFirstResponder];
}
return YES;
}
Для сохранения настроек используется синглтон [NSUserDefaults standardUserDefaults]:
-(void) saveSettings {
NSUserDefaults *userDefaults=[NSUserDefaults standardUserDefaults];
[userDefaults setObject:self.loginField.text forKey:kSettingsLogin];
[userDefaults setObject:self.passwordField.text forKey:kSettingsPassword];
[userDefaults setInteger:self.levelSegmentControl.selectedSegmentIndex forKey:kSettingsLevel];
[userDefaults setBool:self.shadowSwitch.isOn forKey:kSettingsShadow];
[userDefaults setInteger:self.detalizationSegmentControl.selectedSegmentIndex forKey:kSettingsDetalization];
[userDefaults setFloat:self.soundSlider.value forKey:kSettingsSound];
[userDefaults setFloat:self.musicSlider.value forKey:kSettingsMusic];
[userDefaults synchronize];
}
Для загрузки настроек действуем наоборот:
-(void) loadSettings{
NSUserDefaults *userDefaults=[NSUserDefaults standardUserDefaults];
self.loginField.text=[userDefaults objectForKey:kSettingsLogin];
self.passwordField.text=[userDefaults objectForKey:kSettingsPassword];
self.levelSegmentControl.selectedSegmentIndex=[userDefaults integerForKey:kSettingsLevel];
self.shadowSwitch.on=[userDefaults boolForKey:kSettingsShadow];
self.detalizationSegmentControl.selectedSegmentIndex= [userDefaults integerForKey:kSettingsDetalization];
self.soundSlider.value=[userDefaults floatForKey:kSettingsSound];
self.musicSlider.value=[userDefaults floatForKey:kSettingsMusic];
}
Так же в уроке рассмотрено как создавать слушателя нотификаций клавиатуры (когда клавиатура появляется и исчезает).
В функции viewDidLoad :
NSNotificationCenter * nc=[NSNotificationCenter defaultCenter];
[nc addObserver:self selector:@selector(notificationKeyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
[nc addObserver:self selector:@selector(notificationKeyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
Сразу же удаляем (чтобы не забыть об этом) наблюдателя в методе dealloc:
- (void) dealloc{
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
Это функции выполняются при поступлении нотификации от клавиатуры:
-(void) notificationKeyboardWillShow: (NSNotification*) notification{
NSLog(@"notificationKeyboardWillShow %@",notification.userInfo);
}
-(void) notificationKeyboardWillHide: (NSNotification*) notification{
NSLog(@"notificationKeyboardWillHide %@",notification.userInfo);
}
Исходный текст урока 29.
Домашнее задание к уроку 29:
Ученик-Студент-Мастер-Супермен:
1. Сделайте задания из уроков 27 и 28 используя статические ячейки.
2. Добавьте возможность сохранять результат.
3. Добавьте новые секции и ячейки с прочим контролами (свичи, сегменты, слайдеры) чтобы проработать материал
Комментариев нет:
Отправить комментарий