IOS:如果UISlider更改其值,则仅显示一次警报

时间:2015-03-25 15:24:25

标签: ios objective-c uialertview uislider uicontrolevents

当用户滑动滑块移动forword并在标签中标记其值时,我正在使用uislider的应用程序haivng功能。我已经为此执行了这样的操作

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

到这里很好但我需要在用户第一次点击滑块时显示警报视图。如果用户单击确定,则标签应更改滑块值,如果取消它应显示一些默认值。 需要的关键点:

  1. 仅在用户点击第二次警报时才显示警报
  2. 如果在警报视图中单击“确定”,则只应更改滑块
  3. 如果在警报视图上单击取消,则滑块不应更改其值

3 个答案:

答案 0 :(得分:2)

1)查看dispatch_once API。查看this link

2)和3)在将警报提升到实例变量之前保存滑块的值。将您的类设置为UIAlertView的委托。如果按下取消按钮,请将滑块设置回保存的值。如果单击确定按钮(您必须在创建警报时指定),请不执行任何操作。

对于UIKit入门,请参阅Ray Wenderlich的site

答案 1 :(得分: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 :(得分:0)

我宁愿让你的viewController成为UISlider的委托,并管理自己的状态以显示/隐藏警报。

检查你需要实现的UISliderDelegate方法(如果你不这样做,编译器就会抱怨)。

@interface YourViewController : UIViewController <UIScrollViewDelegate>