Can't set UIAlertview events?

瘦欲@ 提交于 2019-12-11 14:12:36

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!