UIAlertView first deprecated IOS 9

后端 未结 10 1314
南笙
南笙 2020-11-28 02:29

I have tried several ways to use UIAlertController,instead of UIAlertView. I tried several ways but I cannot make the alert action work. Here is my code that works fine in I

10条回答
  •  情话喂你
    2020-11-28 02:49

    Make UIAlertController+AlertController Category as:

    UIAlertController+AlertController.h

    typedef void (^UIAlertCompletionBlock) (UIAlertController *alertViewController, NSInteger buttonIndex);
    
    @interface UIAlertController (AlertController)
    
    + (instancetype)showAlertIn:(UIViewController *)controller
                      WithTitle:(NSString *)title
                        message:(NSString *)message
              cancelButtonTitle:(NSString *)cancelButtonTitle
              otherButtonTitles:(NSString *)otherButtonTitle
                       tapBlock:(UIAlertCompletionBlock)tapBlock;
    @end
    

    UIAlertController+AlertController.m

    @implementation UIAlertController (NTAlertController)
    
    + (instancetype)showAlertIn:(UIViewController *)controller
                      WithTitle:(NSString *)title
                        message:(NSString *)message
              cancelButtonTitle:(NSString *)cancelButtonTitle
              otherButtonTitles:(NSString *)otherButtonTitle
                       tapBlock:(UIAlertCompletionBlock)tapBlock {
    
        UIAlertController *alertController = [self alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleAlert];
    
        if(cancelButtonTitle != nil) {
    
            UIAlertAction *cancelButton = [UIAlertAction
                                           actionWithTitle:cancelButtonTitle
                                           style:UIAlertActionStyleCancel
                                           handler:^(UIAlertAction *action)
                                           {
                                               tapBlock(alertController, ALERTACTION_CANCEL); // CANCEL BUTTON CALL BACK ACTION
                                           }];
            [alertController addAction:cancelButton];
    
        }
    
        if(otherButtonTitle != nil) {
    
            UIAlertAction *otherButton = [UIAlertAction
                                       actionWithTitle:otherButtonTitle
                                       style:UIAlertActionStyleDefault
                                       handler:^(UIAlertAction *action)
                                       {
                                           tapBlock(alertController, ALERTACTION_OTHER); // OTHER BUTTON CALL BACK ACTION
                                       }];
    
            [alertController addAction:otherButton];
        }
    
        [controller presentViewController:alertController animated:YES completion:nil];
    
        return alertController;
    }
    
    @end
    

    in your ViewController.m

    [UIAlertController showAlertIn:self WithTitle:@"" message:@"" cancelButtonTitle:@"Cancel" otherButtonTitles:@"Other" tapBlock:^(UIAlertController *alertController, NSInteger index){
    
     if(index == ALERTACTION_CANCEL){
    
     // CANCEL BUTTON ACTION
     }else
    if(index == ALERTACTION_OTHER){
    
     // OTHER BUTTON ACTION
     }
    
     [alertController dismissViewControllerAnimated:YES completion:nil];
    
     }];
    

    NOTE: If you want to add more than two buttons then add another more UIAlertAction to the UIAlertController.

提交回复
热议问题