如何从任何NSObject子类显示UIAlertController?

时间:2015-07-17 09:17:30

标签: ios uialertview uialertcontroller ios9

我有一个我正在管理的遗留代码库,需要显示来自各地的警报消息。这是一种可怕的做法,需要一个重构,但这不会很快发生。使用iOS 9,我需要具备触发功能。忘记警报视图,并为我管理视图显示和排队。

3 个答案:

答案 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,它管理从任何类显示警报,并为你排队的警报...

https://github.com/sammio2/SMHAlertController

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