2013-07-27 3 views
0

Так что я смог получить текстовые поля для заполнения в виде представлений в моем представлении таблицы для входа. Теперь я хочу указать текстовое поле имени пользователя и текстовое поле пароля в моем действии для входа, однако действие не может найти переменные текстовых полей (имя пользователя и пароль). ПОЖАЛУЙСТА, ПОМОГИТЕ! Это меня заводило! Вот мой код.Table View Cell/UITextField/UIControlEvent

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 

    NSString *CellIdentifier = [self.menuItems objectAtIndex:indexPath.row]; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; 

    if (indexPath.row == 0) { 
     UITextField *username = [[UITextField alloc] init]; 
     username.frame = CGRectMake(10, 6, 280, 30); 
     username.placeholder = @"Username"; 
     cell.tag = 0; 
     [username addTarget:self action:@selector(login:) forControlEvents:UIControlEventTouchUpInside]; 
     [cell.contentView addSubview:username]; 
    } else { 
     UITextField *password = [[UITextField alloc] init]; 
     password.frame = CGRectMake(10, 6, 280, 30); 
     password.placeholder = @"Password"; 
     cell.tag = 1; 
     [password addTarget:self action:@selector(login:) forControlEvents:UIControlEventTouchUpInside]; 
     [password setSecureTextEntry:YES]; 
     [cell.contentView addSubview:password]; 
    } 




    return cell; 


} 

Как вы можете видеть, я создал текстовые поля, имя пользователя и пароль. Однако в действии переменные не ссылаются! В любое время появляется слово «имя пользователя» или «пароль», в нем говорится «использование неизвестного имени пользователя»/«использование незаявленного пароля идентификатора». Ваша помощь будет принята с благодарностью!

-(IBAction)login:(id)sender { 

    if ([username.text isEqualToString:@""] || [password.text isEqualToString:@""]) { 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Oops!" message:@"Please fill in all the fields!" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; 
     [alert show]; 
     return; 
    } 

    { 
     NSString *strURL = [NSString stringWithFormat:@"http://www.mysite.com/myfile.php?username=%@&password=%@",username.text, password.text]; 

     NSData *dataURL = [NSData dataWithContentsOfURL:[NSURL URLWithString:strURL]]; 

     NSString *strResult = [[NSString alloc] initWithData:dataURL encoding:NSUTF8StringEncoding]; 

     NSLog(@"%@", strResult); 

     NSString *cont11 = [NSString stringWithFormat:@"http://www.mysite.com/myfile.php?username=%@&password=%@",username.text, password.text]; 

     NSData *cont12 = [NSData dataWithContentsOfURL:[NSURL URLWithString:cont11]]; 


     NSString *cont13 = [[NSString alloc] initWithData:cont12 encoding:NSUTF8StringEncoding]; 

     NSLog(@"%@", cont13); 

     if ([strResult isEqualToString:@"1"]) 
     { 


      UIStoryboard *mainStoryboard=[UIStoryboard 
              storyboardWithName:@"Storyboard" bundle:nil]; 

      AdminPanel *mainView=[mainStoryboard 
               instantiateViewControllerWithIdentifier:@"admin"]; 

      mainView.modalTransitionStyle=UIModalTransitionStyleCoverVertical; 

      [self presentViewController:mainView animated:YES completion:nil]; 

     }else 
     { 
      // invalid information 
      UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Oops!" message:@"You must have entered something wrong! Try again!" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; 
      [alert show]; 
      return; 

     } 
    } 

} 
+0

Вы хотите ввести имя пользователя и пароль для получения значений имени пользователя и пароля ??? –

+0

Отправителем будет textField, который закончил редактирование, поэтому вы можете заменить username.text на sender.text - для этого вам следует также изменить подпись метода на - (IBAction) login: (UITextField *) отправитель – rdelmar

ответ

0

Вы должны создать переменные под @interface в файле .m:

@interface YourViewController() 
{ 
     UITextField *username; 
     UITextField *password; 
} 

Затем вынуть "UITextField" при инициализации этих переменных.