我希望在用户点击2s按钮后显示警报视图。该功能是开始校准,我想向用户显示校准在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
中,但似乎两者都不正确。
我怎样才能得到这个'循环'被执行?我应该把它放在哪里?或者我应该使用计时器来计算?
答案 0 :(得分:1)
如果您只想在延迟一段时间后执行某些代码,请使用dispatch_after:
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 2 * NSEC_PER_SEC), dispatch_get_main_queue()) {
// ...
}
答案 1 :(得分:0)
您也可以使用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];