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