With the help of
UIAlertView you can notify the user, ask the user for confirmation or some type of input. There are various types of alerts depending on the alert view style. We are going to review how to create all the different alert styles that are available and then using the
UIAlertViewDelegate to find out which button was pressed and the text that was input by the user.
Interface file for the view controller - MyAlertViewViewController.h
#import <UIKit/UIKit.h>
@interface MyAlertViewViewController : UIViewController <UIAlertViewDelegate>
@property (nonatomic, strong) UIButton *myButton;
@end
Implementation file for the view controller - MyAlertViewViewController.m
#import "MyAlertViewViewController.h"
@interface MyAlertViewViewController ()
@end
@implementation MyAlertViewViewController
@synthesize myButton;
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.view.backgroundColor = [UIColor whiteColor];
//origin and size for our buttons
CGRect myFrame = CGRectMake(10.0f, 10.0f, 300.0f, 30.0f);
for (int i=0; i<4; i++) {
//create the button and set the frame
self.myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[self.myButton setFrame:myFrame];
//set the button title
NSString *buttonTitle = @"Default Alert";
switch (i) {
case 1:
buttonTitle = @"Plain Text Input Alert";
break;
case 2:
buttonTitle = @"Secure Text Input Alert";
break;
case 3:
buttonTitle = @"Login and Password Input Alert";
break;
default:
break;
}
[self.myButton setTitle:buttonTitle
forState:UIControlStateNormal];
//set the action method when the button is clicked
[self.myButton addTarget:self
action:@selector(displayMyAlert:)
forControlEvents:UIControlEventTouchUpInside];
//set button tag for identification
[self.myButton setTag:i+1];
//add the button to the view
[self.view addSubview:self.myButton];
//move the origin for the next button
myFrame.origin.y += 35.0f;
}
}
- (void) displayMyAlert:(UIButton *) button{
NSLog(@"Button was clicked, lets display our alert view");
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:button.currentTitle
message:@"Put whatever message you want"
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"Ok", nil];
//based on the button set the alert view style
switch (button.tag) {
case 2:
//An alert that allows the user to enter text
[alertView setAlertViewStyle:UIAlertViewStylePlainTextInput];
break;
case 3:
//An alert that allows the user to enter text. The text field is obscured
[alertView setAlertViewStyle:UIAlertViewStyleSecureTextInput];
break;
case 4:
//An alert that allows the user to enter a login identifier and password
[alertView setAlertViewStyle:UIAlertViewStyleLoginAndPasswordInput];
break;
default:
break;
}
//display our alert
[alertView show];
}
- (void) alertView:(UIAlertView *)alertView
clickedButtonAtIndex:(NSInteger)buttonIndex{
//which button was pressed in the alert view
NSString *buttonTitle = [alertView buttonTitleAtIndex:buttonIndex];
if ([buttonTitle isEqualToString:@"Ok"]){
NSLog(@"Ok button was pressed.");
}
else if ([buttonTitle isEqualToString:@"Cancel"]){
NSLog(@"Cancel button was pressed.");
}
//which alert view it is?
NSString *alertTitle = [alertView title];
NSLog(@"%@", alertTitle);
// If plain text or secure text
if ([alertView alertViewStyle] == UIAlertViewStylePlainTextInput ||
[alertView alertViewStyle] == UIAlertViewStyleSecureTextInput)
//find the text field by index and then find its value
NSLog(@"Text: %@", [[alertView textFieldAtIndex:0] text]);
// Login and password, they have 2 text field at index 0 and 1
else if ([alertView alertViewStyle] == UIAlertViewStyleLoginAndPasswordInput)
{
//find the text field by index and then find its value
NSLog(@"Login: %@", [[alertView textFieldAtIndex:0] text]);
//find the text field by index and then find its value
NSLog(@"Password: %@", [[alertView textFieldAtIndex:1] text]);
}
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
Reference
No comments:
Post a Comment
NO JUNK, Please try to keep this clean and related to the topic at hand.
Comments are for users to ask questions, collaborate or improve on existing.