2015-03-25 3 views
1

я делаю приложение функциональность haivng из uislider, когда пользователь перемещает ползунок он перемещается ForWord и chages его значение в label.I дали действие, как это для тогоIOS: Показать предупреждение только один раз, если UISlider изменяет свое значение

- (IBAction)sensivity:(UISlider*)sender 
{ 
    self.senlabel.text =[NSString stringWithFormat:@"%d", (int)sender.value]; 
} 

до этого здесь хорошо, но мне нужно показать вид предупреждения, когда пользователь впервые нажимает ползунок. если пользователь нажмет «ОК», тогда метка должна изменить значение ползунка, если отменить его, должно отображаться какое-то значение по умолчанию. Ключевые моменты необходимо:

  1. показать предупреждение только время, если пользователь вводит второй раз предупреждение должно теперь показать
  2. если нажмите ОК на оповещения зрения только тогда ползунок должен изменить
  3. , если нажать кнопку Отмена на оповещения зрения, то ползунок не следует изменять его значение

ответ

2

1) Посмотрите на API dispatch_once. Выезд this link.

2) и 3) Сохраните значение ползунка прямо перед тем, как вы выбросите предупреждение в переменной экземпляра. Установите класс как делегат из UIAlertView. Если кнопка отмены нажата, установите ползунок обратно на сохраненное значение. Если нажата кнопка ОК (которую вы должны указать при создании предупреждения), ничего не делайте.

Для праймера UIKit см. site Ray Wenderlich.

+1

следует отметить, что UIAlertView являются устаревшими в это и за его пределами, вы должны использовать UIAlertController https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIAlertController_class/ – bolnad

0

Вот ваш ответ:

> - (IBAction)valueChanged:(UISlider *)sender 
{ 
static dispatch_once_t onceToken; 

dispatch_once (&onceToken, ^{ 

    UIAlertController * alert= [UIAlertController 
            alertControllerWithTitle:@"Title" 
            message:@"Your custom message" 
            preferredStyle:UIAlertControllerStyleAlert]; 

    UIAlertAction* cancel = [UIAlertAction 
         actionWithTitle:@"Cancel" 
         style:UIAlertActionStyleDefault 
         handler:^(UIAlertAction * action) 
         { 
          //Do some thing here 
          [alert dismissViewControllerAnimated:YES completion:nil]; 
          return ; 

         }]; 
    [alert addAction:cancel]; 

    UIAlertAction* ok = [UIAlertAction 
         actionWithTitle:@"OK" 
         style:UIAlertActionStyleDefault 
         handler:^(UIAlertAction * action) 
         { 
          //Do some thing here 
          [alert dismissViewControllerAnimated:YES completion:nil]; 

         }]; 
    [alert addAction:ok]; 

    [self presentViewController:alert animated:YES completion:nil]; 

}); 

} 
+2

Ответы лучше если они содержат объяснение. Не просто отправьте код, объясните, что он делает и почему. – rmaddy

0

Я предпочел бы сделать свой ViewController быть делегатом UISlider и управлять себе состояние одного и того же, чтобы показать оповещения/скрыть.

Проверьте методы UISliderDelegate, которые необходимо реализовать (компилятор будет жаловаться, если вы этого не сделаете).

@interface YourViewController : UIViewController <UIScrollViewDelegate>