2013-05-30 1 views
0

Je suis nouveau dans le développement de l'iphone.je veux donner un message d'alerte si textfield's le texte est si le changement ou pas. Comment je peux vérifier les valeurs précédentes de texte de champ de texte et les valeurs actuelles?comment vérifier la valeur précédente de textfield et la valeur modifiée

mon code est

UITextField *txtCon; 

NSString *strname; 

txtCon.text = @"hello"; 

strname = txtCon.text; 

if(txtCon.text == strname) 
{ 
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Rate on the Appstore!" 
               message:@"changed" 
               delegate:self 
             cancelButtonTitle:@"Later" 
             otherButtonTitles:@"OK", nil]; 
[alert show]; 
[alert release]; 
} 
else 
{ 
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Rate on the Appstore!" 
               message:@"not changed" 
               delegate:self 
             cancelButtonTitle:@"Later" 
             otherButtonTitles:@"OK", nil]; 
[alert show]; 
[alert release]; 
} 

Répondre

1

Essayez celui-ci ...

-(void)textFieldDidEndEditing:(UITextField *)textField 
    { 
     if ([textField.text isEqualToString:strname]) 
     { 
      UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Rate on the Appstore!" 
                message:@"changed" 
                delegate:self 
              cancelButtonTitle:@"Later" 
              otherButtonTitles:@"OK", nil]; 
      [alert show]; 
      [alert release]; 
     } 
     else 
     { 
      UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Rate on the Appstore!" 
                message:@"not changed" 
                delegate:self 
              cancelButtonTitle:@"Later" 
              otherButtonTitles:@"OK", nil]; 
      [alert show]; 
      [alert release]; 
     } 

} 
+0

textField.textColor ?? –

+0

Désolé cher ... Erreur idiote ... –

0

if(txtCon.text == strname) ce code est erroné, vous ne pouvez pas comparer deux cordes comme ça. méthode droite est,

dans le fichier .h

@interface ViewController : UIViewController 
{ 
    NSString * oldValue; 
    NSString * newValue; 
} 

dans le fichier .m

- (void)viewDidLoad 
{ 
    oldvalue = txtCon.text; 
} 
-(void)textFieldDidEndEditing:(UITextField *)textField 
{     
    newValue = txtCon.text 
} 

- (IBAction)yourBtn:(id)sender {     
    if ([oldvalue isEqualToString:newValue]) { 
      //write your alert code here 
    }else{ 
      //write your alert code here 
      oldvalue =newValue; 
    } 
} 

Sinon, votre code semble agréable. textFieldDidEndEditing appelé lorsque l'édition du champ de texte se termine à ce moment-là, comparez-le avec la valeur précédente s'il n'est pas égal à la nouvelle valeur de la chaîne.

Je vous recommande d'utiliser votre nom de champ d'origine au lieu de textField à ce code if ([txtCon.text isEqualToString:strname]). becoz si vous avez plus d'un champ de texte qu'il vaut mieux utiliser le nom d'origine.

+0

merci pour l'aide..mais je veux vérifier que les valeurs sont modifiées ou non sur l'événement cliqué du bouton .. pas sur le délégué de textfield. – Sonu

+0

qu'au lieu de '- (void) textFieldDidEndEditing: (UITextField *) textField' écrire votre événement de clic de bouton. – Dilip

+0

Voir ma réponse maintenant ... – Dilip

0
-(void)textFieldDidEndEditing:(UITextField *)textField 
{  

    if ([textField isEqual:txtCon]) 
    { 
     // Code to get edited value of textfield 
    } 
} 

Cela vous aidera s'il y a beaucoup de textfields ..

1

Vous devez créer une propriété:

@property (nonatomic, strong) NSString *lastTextInTextField; 

initialize dans viewDidLoad comme ceci:

self.lastTextInTextField = txtCon.text; 

puis, lorsque vous appuyez sur le bouton, comparez la valeur du champ de texte que vous avez conservée aux champs de texte strin g:

if ([self.lastTextInTextField isEqualToString:txtCon.text]) 
{ 
    // matches the old one; 
} 
else 
{ 
    // not matched 
} 

// then just set this property value to current textfield string. 
self.lastTextInTextField = txtCon.text; 
Questions connexes