单击按钮 2 秒后如何显示 AlertController
How to present AlertController 2 seconds after click a button
我想在用户点击按钮 2 秒后显示一个提醒视图。功能是开始校准,我想告诉用户2s后校准完成。
我在一个数组中计数,当它达到 20(呈现 2s)时,我使用了
if showCalibDone {
let calibDoneAlert = UIAlertController(title: "", message: "Calibration is finished", preferredStyle: .Alert)
calibDoneAlert.addAction(UIAlertAction(title: "", style: .Default, handler: {(action: UIAlertAction!) in
self.x0 = self.average40(self.xCalibrate)
self.presentViewController(calibDoneAlert, animated: true, completion: nil)
}))
这是计数。 xCalibrate
是一个数组,每次加速度计更新时都会添加一个对象。
if xCalibrate.count == 40 {
println("40 achieved")
self.showCalibDone = true
}
但是在这种 if
情况下,警报视图永远不会出现。我试着把它放在 viewWillAppear
或 viewDidLoad
中,但似乎两者都不正确。
如何让这个 'loop' 被执行?我应该把它放在哪里?或者我应该用计时器来计数?
如果您只想在延迟一段时间后执行某些代码,请使用 dispatch_after:
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 2 * NSEC_PER_SEC), dispatch_get_main_queue()) {
// ...
}
您也可以使用 performSelector 来达到同样的效果
- (void) showAlert
{
[[[UIAlertView alloc] initWithTitle:@"Title" message:@"Some message" delegate:nil cancelButtonTitle:nil otherButtonTitles:@"OK",nil] show];
}
//
[self performSelector:@selector(showAlert) withObject:nil afterDelay:2.0f];
我想在用户点击按钮 2 秒后显示一个提醒视图。功能是开始校准,我想告诉用户2s后校准完成。
我在一个数组中计数,当它达到 20(呈现 2s)时,我使用了
if showCalibDone {
let calibDoneAlert = UIAlertController(title: "", message: "Calibration is finished", preferredStyle: .Alert)
calibDoneAlert.addAction(UIAlertAction(title: "", style: .Default, handler: {(action: UIAlertAction!) in
self.x0 = self.average40(self.xCalibrate)
self.presentViewController(calibDoneAlert, animated: true, completion: nil)
}))
这是计数。 xCalibrate
是一个数组,每次加速度计更新时都会添加一个对象。
if xCalibrate.count == 40 {
println("40 achieved")
self.showCalibDone = true
}
但是在这种 if
情况下,警报视图永远不会出现。我试着把它放在 viewWillAppear
或 viewDidLoad
中,但似乎两者都不正确。
如何让这个 'loop' 被执行?我应该把它放在哪里?或者我应该用计时器来计数?
如果您只想在延迟一段时间后执行某些代码,请使用 dispatch_after:
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 2 * NSEC_PER_SEC), dispatch_get_main_queue()) {
// ...
}
您也可以使用 performSelector 来达到同样的效果
- (void) showAlert
{
[[[UIAlertView alloc] initWithTitle:@"Title" message:@"Some message" delegate:nil cancelButtonTitle:nil otherButtonTitles:@"OK",nil] show];
}
//
[self performSelector:@selector(showAlert) withObject:nil afterDelay:2.0f];