有延迟的presentViewController

Eri*_*ric 1 objective-c ios uialertcontroller

调用[self presentViewController]一个实例UIAlertController立即加载警报。有没有办法延迟它的呈现?

[self presentViewController:alert animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)

man*_*man 5

您可以使用 GCD 或 performSelector:withObject:afterDelay:

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
     [self presentViewController:alert animated:YES completion:nil];
});
Run Code Online (Sandbox Code Playgroud)

您还可以创建一个局部变量,然后在您想要的正确时间调用present。取决于您的用例,这三个中的一个应该可以帮助您在适当的时候延迟和显示警报控制器。

编辑:这是这个答案的 Swift 版本:

DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
    self.present(alert, animated: true)
}
Run Code Online (Sandbox Code Playgroud)

你也可以检查这个答案