如何在单击按钮后2秒显示AlertController

时间:2015-03-19 22:13:14

标签: ios swift nstimer uialertcontroller

我希望在用户点击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条件。我试图将其放在viewWillAppearviewDidLoad中,但似乎两者都不正确。

我怎样才能得到这个'循环'被执行?我应该把它放在哪里?或者我应该使用计时器来计算?

2 个答案:

答案 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];