123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- //
- // RQAlertController.m
- // LN_School
- //
- // Created by 张嵘 on 2018/10/12.
- // Copyright © 2018 Danson. All rights reserved.
- //
- #import "RQAlertController.h"
- @interface RQAlertController ()
- @end
- @implementation RQAlertController
- + (void)showAlertAtViewController:(nonnull UIViewController *)viewController
- WithTitle:(nullable NSString *)title
- message:(nullable NSString *)message
- alertControllerStyle:(UIAlertControllerStyle)alertControllerStyle
- cancelButtonTitle:(nonnull NSString *)cancelButtonTitle
- otherButtonTitles:(nullable NSArray *)otherButtonTitles
- otherButtonStyles:(nullable NSDictionary *)otherButtonStyles
- preferredActionTitle:(nullable NSString *)preferredActionTitle
- completion:(nullable RQAlertViewCompletion)completion {
- __block UIAlertController *alertController = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:alertControllerStyle];
-
- void (^alertActionHandler) (UIAlertAction *) = [^(UIAlertAction *action) {
- if (completion) {
- if (action.style == UIAlertActionStyleCancel) {
- completion(NSNotFound);
- }else {
- NSUInteger index = [alertController.actions indexOfObject:action];
- completion(index - 1);
- }
- }
- alertController = nil;
- } copy];
-
- [alertController addAction:[UIAlertAction actionWithTitle:cancelButtonTitle style:UIAlertActionStyleCancel handler:alertActionHandler]];
-
-
- @synchronized (alertController) {
- for (NSString *buttonTitle in otherButtonTitles) {
- NSNumber *actionStyleNumber = [otherButtonStyles valueForKey:buttonTitle];
- UIAlertActionStyle actionStyle = UIAlertActionStyleDefault;
- if (actionStyleNumber) {
- actionStyle = [actionStyleNumber integerValue];
- }
- UIAlertAction *action = [UIAlertAction actionWithTitle:buttonTitle
- style:actionStyle
- handler:alertActionHandler];
- [alertController addAction:action];
-
- ///Support for iOS9 add preferredAction for highlights the text of that action
- if ([alertController respondsToSelector:@selector(setPreferredAction:)]) {
- if ([preferredActionTitle isEqualToString:buttonTitle]) {
- if (@available(iOS 9.0, *)) {
- [alertController setPreferredAction:action];
- } else {
- // Fallback on earlier versions
- }
- }
- }
- }
- }
- [[RQ_SHARE_FUNCTION getCurrentVC] presentViewController:alertController animated:YES completion:nil];
- }
- + (void)showAlertWithTitle:(nullable NSString *)title
- message:(nullable NSString *)message
- alertControllerStyle:(UIAlertControllerStyle)alertControllerStyle
- cancelButtonTitle:(nonnull NSString *)cancelButtonTitle
- otherButtonTitles:(nullable NSArray *)otherButtonTitles
- otherButtonStyles:(nullable NSDictionary *)otherButtonStyles
- preferredActionTitle:(nullable NSString *)preferredActionTitle
- completion:(nullable RQAlertViewCompletion)completion{
- [self showAlertAtViewController:[RQ_SHARE_FUNCTION getCurrentVC]
- WithTitle:title
- message:message
- alertControllerStyle:alertControllerStyle
- cancelButtonTitle:cancelButtonTitle
- otherButtonTitles:otherButtonTitles
- otherButtonStyles:otherButtonStyles
- preferredActionTitle:preferredActionTitle
- completion:completion];
- }
- + (void)showAlertWithTitle:(nullable NSString *)title
- message:(nullable NSString *)message
- alertControllerStyle:(UIAlertControllerStyle)alertControllerStyle
- cancelButtonTitle:(nonnull NSString *)cancelButtonTitle
- otherButtonTitles:(nullable NSArray *)otherButtonTitles
- otherButtonStyles:(nullable NSDictionary *)otherButtonStyles
- completion:(nullable RQAlertViewCompletion)completion {
- [self showAlertAtViewController:[RQ_SHARE_FUNCTION getCurrentVC]
- WithTitle:title
- message:message
- alertControllerStyle:alertControllerStyle
- cancelButtonTitle:cancelButtonTitle
- otherButtonTitles:otherButtonTitles
- otherButtonStyles:otherButtonStyles
- preferredActionTitle:nil
- completion:completion];
- }
- @end
|