有延迟的 presentViewController

presentViewController with delay

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

[self presentViewController:alert animated:YES completion:nil];

您可以使用 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];
});

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

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

DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
    self.present(alert, animated: true)
}

您还可以检查this answer

如果您正在等待下载某些东西或其他东西,您也可以考虑使用一个块,该块在任务完成后被调用(并呈现视图控制器)。如果这样做,您还应该使用某种加载动画。