问题
I can't set action event for alertview. Here when I click the alertview button it can't be actioned. What's the problem in my code.
Here is my code :
-(IBAction)savebuttons
{
if([username.text isEqualToString:@""] && [password.text isEqualToString:@""] && [emailid.text isEqualToString:@""] && [phonenum.text isEqualToString:@""] && [address.text isEqualToString:@""] && [city.text isEqualToString:@""] && [state.text isEqualToString:@""] && [country.text isEqualToString:@""] && [zipcode.text isEqualToString:@""]) {
UIAlertView *view = [[UIAlertView alloc] initWithTitle:@"Warning" message:@"Please enter all the details" delegate:nil cancelButtonTitle:@"Dismiss" otherButtonTitles:nil];
[view show];
[view release];
}
else if([username.text isEqualToString:@""])
{
views = [[UIAlertView alloc] initWithTitle:@"Email ID" message:@"Email ID cannot be blank" delegate:nil cancelButtonTitle:@"Dismiss" otherButtonTitles:nil];
views.tag=1;
[views show];
[views release];
}
else if([password.text isEqualToString:@""]){
UIAlertView *view = [[UIAlertView alloc] initWithTitle:@"Password" message:@"Password cannot be blank" delegate:nil cancelButtonTitle:@"Dismiss" otherButtonTitles:nil];
view.tag=2;
[view show];
[view release];
}
else
{
.....
......
}
- (void)alertView:(UIAlertView *)alertViews clickedButtonAtIndex:(NSInteger)buttonIndex
{
if(alertViews.tag == 1)
{
if(buttonIndex == 0)
{
[username becomeFirstResponder];
NSLog(@"Username");
}
}
if(alertViews.tag == 2)
{
if(buttonIndex == 0)
{
[password becomeFirstResponder];
NSLog(@"Password");
}
}
I have only one button for alertview like "OK". But it's not responding.
回答1:
The message gets sent to the delegate, which you specified as nil. Set the delegate to self, and it would work.
UIAlertView *view = [[UIAlertView alloc] initWithTitle:@"Warning"
message:@"Please enter all the details"
delegate:self
cancelButtonTitle:@"Dismiss"
otherButtonTitles:nil];
回答2:
you have set delegate of alert views to nil, set it to self
, if you did not set delegate , delegate methods are not called
回答3:
UIAlertView *myAlert = [[UIAlertView alloc]
initWithTitle:@"Alert !!" message:@"This is my Alert"
delegate:self cancelButtonTitle:@"Cancel"
otherButtonTitles:@"OK",nil];
[myAlert show];
myAlert.tag = 1;
[myAlert release];
// Delegate Method of UIAlert :
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (buttonIndex==1 && myAlert.tag == 1)
{
// Action to be done/ called on button index 1 (OK button) of myAlert
}
else if (buttonIndex==0 && myAlert.tag == 1)
{
// Action to be done/ called on button index 0 (Cancel button) of myAlert
}
}
来源:https://stackoverflow.com/questions/7872449/cant-set-uialertview-events