我有一个我正在管理的遗留代码库,需要显示来自各地的警报消息。这是一种可怕的做法,需要一个重构,但这不会很快发生。使用iOS 9,我需要具备触发功能。忘记警报视图,并为我管理视图显示和排队。
答案 0 :(得分:7)
要显示UIAlertController
,我们需要UIViewController
的对象,因此您可以使用以下方式来执行此操作。
UIWindow *keyWindow = [[UIApplication sharedApplication]keyWindow];
UIViewController *mainController = [keyWindow rootViewController];
[mainController presentViewController:alert animated:YES completion:nil];
由于
答案 1 :(得分:1)
正如其他人所说,这通常是不好的做法,违反了MVC原则。但是,如果您正在管理遗留代码库并且重构所有内容根本不是一个选项,我创建了这个类,它允许您像旧UIAlertController
一样处理UIAlertView
,它管理从任何类显示警报,并为你排队的警报...
答案 2 :(得分:1)
对于NSObject类中的显示UIAlertController使用下面的代码。
final AtomicLong concurrentExchangeCount = new AtomicLong(0);
final HttpClientBuilder httpClientBuilder = new HttpClientBuilder() {
@Override
protected ClientExecChain decorateMainExec(final ClientExecChain mainExec) {
return (route, request, clientContext, execAware) -> {
concurrentExchangeCount.incrementAndGet();
try {
return mainExec.execute(route, request, clientContext, execAware);
} finally {
concurrentExchangeCount.decrementAndGet();
}
};
}
};
final CloseableHttpClient httpClient = httpClientBuilder.build();
//将下面的方法放在全球助手类中。
UIAlertController * popup = [UIAlertController
alertControllerWithTitle:nil
message:nil
preferredStyle:UIAlertControllerStyleActionSheet];
UIAlertAction* cancel = [UIAlertAction
actionWithTitle:@"Cancel"
style:UIAlertActionStyleCancel
handler:^(UIAlertAction * action) {
[popup dismissViewControllerAnimated:YES completion:nil];
}];
[popup addAction:cancel];
UIViewController *rootViewController = [[Helper shareInstance] topViewController];
[rootViewController presentViewController:popup animated:YES completion:nil];