单击按钮 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 情况下,警报视图永远不会出现。我试着把它放在 viewWillAppearviewDidLoad 中,但似乎两者都不正确。

如何让这个 '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];