IOS:Show 仅在 UISlider 更改其值时提醒一次
IOS:Show alert only once if UISlider changes its value
我正在执行 uislider 的应用程序功能,当用户滑动它向前移动的滑块并改变它在 label.I 中的值时,已经为此
给出了这样的操作
- (IBAction)sensivity:(UISlider*)sender
{
self.senlabel.text =[NSString stringWithFormat:@"%d", (int)sender.value];
}
到目前为止一切正常,但我需要在用户第一次开始点击滑块时显示警报视图。如果用户单击确定,那么它的标签应该更改滑块值,如果取消它应该显示一些默认值。
需要的关键点:
- 如果用户点击第二次警报,则仅显示一次警报现在应显示
- 如果在警报视图上单击“确定”,则只有滑块会更改
- 如果在警报视图上单击取消,则滑块不应更改其值
1) 查看dispatch_once
API。查看 this link。
2) 和 3) 在实例变量中抛出警报之前保存滑块的值。将您的 class 设置为 UIAlertView 的委托。如果点击取消按钮,将滑块设置回保存的值。如果点击确定按钮(您必须在创建警报时指定),则什么也不做。
有关 UIKit 入门,请参阅 Ray Wenderlich 的 site。
这是你的答案:
> - (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];
});
}
我宁愿让你的 viewController 成为 UISlider 的代表,并自己管理与 show/hide 警报相同的状态。
检查需要实现的 UISliderDelegate 方法(如果不实现,编译器会报错)。
@interface YourViewController : UIViewController <UIScrollViewDelegate>
我正在执行 uislider 的应用程序功能,当用户滑动它向前移动的滑块并改变它在 label.I 中的值时,已经为此
给出了这样的操作- (IBAction)sensivity:(UISlider*)sender
{
self.senlabel.text =[NSString stringWithFormat:@"%d", (int)sender.value];
}
到目前为止一切正常,但我需要在用户第一次开始点击滑块时显示警报视图。如果用户单击确定,那么它的标签应该更改滑块值,如果取消它应该显示一些默认值。 需要的关键点:
- 如果用户点击第二次警报,则仅显示一次警报现在应显示
- 如果在警报视图上单击“确定”,则只有滑块会更改
- 如果在警报视图上单击取消,则滑块不应更改其值
1) 查看dispatch_once
API。查看 this link。
2) 和 3) 在实例变量中抛出警报之前保存滑块的值。将您的 class 设置为 UIAlertView 的委托。如果点击取消按钮,将滑块设置回保存的值。如果点击确定按钮(您必须在创建警报时指定),则什么也不做。
有关 UIKit 入门,请参阅 Ray Wenderlich 的 site。
这是你的答案:
> - (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];
});
}
我宁愿让你的 viewController 成为 UISlider 的代表,并自己管理与 show/hide 警报相同的状态。
检查需要实现的 UISliderDelegate 方法(如果不实现,编译器会报错)。
@interface YourViewController : UIViewController <UIScrollViewDelegate>