'How to handle Button click event of custom view?
I want to do this below concept in my project:
I just created one small custom popup using UIViewController
, this custom popup containing one message label and two button, one is "OK" and another one is "Cancel". This custom popup coding doing in appdelegate. Now when I want to open this popup, I just called this appdelegate popup method in from viewcontroller when I need to open this alert.
Now the problem is, I want to perform different-different functionality on "OK" button of "Custom alert" Popup. So please help to how to I managed this "Ok" Button click event from Individual ViewController.
Solution 1:[1]
Put the below method in a Utility class and call it from your view controller like
[Utility showAlertWithTitle:@"ABC" msg:@"msg" vc:self positiveHandler:^(UIAlertAction *action) {
// Do here when ok is pressed
} negativeHandler:nil]; //pass nil when cancel is pressed
ObjC
+ (void)showAlertWithTitle:(NSString *)title msg:(NSString *)msg vc:(UIViewController *)vc positiveHandler:(void (^ __nullable)(UIAlertAction *action))positiveHandler negativeHandler:(void (^ __nullable)(UIAlertAction *action))negativeHandler {
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:title message:msg preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *positiveAction = [UIAlertAction actionWithTitle:@"Ok" style:UIAlertActionStyleDefault handler:positiveHandler];
[alertController addAction:positiveAction];
UIAlertAction *negativeAction = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleDefault handler:negativeHandler];
[alertController addAction:negativeAction];
//show alert
[vc presentViewController:alertController animated:YES completion:nil];
}
Swift
// Shows alert with yes no button
static func showAlert(title: String, msg: String, vc: UIViewController, positiveActionHandler: ((UIAlertAction) -> Swift.Void)?, negativeActionHandler: ((UIAlertAction) -> Swift.Void)?) {
let alertController = UIAlertController(title: title, message: msg, preferredStyle: .alert)
let positiveAction = UIAlertAction(title: "Ok", style: .destructive, handler: positiveActionHandler)
alertController.addAction(positiveAction)
let negativeAction = UIAlertAction(title: "Cancel", style: .cancel, handler: negativeActionHandler)
alertController.addAction(negativeAction)
vc.present(alertController, animated: true, completion: nil)
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Inder Kumar Rathore |