2017-02-15 5 views
1

Ich rufe einen UIAlertController mit 2 Textfelder (in Obj-C). Ich habe globale UITextFields definiert, die ich in der Warnung verwenden muss, weil ich das UITextFieldDelegate nutzen muss.UIAlertController addTextFieldWithConfigurationHandler mit globaler Variable

Meine Textfelder sind in der .h-Datei als solche definiert.

@property (nonatomic, strong) UITextField *nameField; 
@property (nonatomic, strong) UITextField *phoneField; 

Gibt es eine Möglichkeit, den addTextFieldWithConfigurationHandler Block von diesem neu zu fassen:

[alert addTextFieldWithConfigurationHandler:^(UITextField *myField) { 
     myField.delegate = self; 
    }]; 

zu so etwas wie diese ... Wo ich das Textfeld zuweisen kann ich früher definierte in diesem Block zu benutzen?

[alert addTextFieldWithConfigurationHandler:^(**nameField**) { 
      nameField.delegate = self; 
     }]; 

Was ich suche, ist, dies zu tun:

- (void)textFieldDidBeginEditing:(UITextField *)textField { 
    if (textField == nameField) { 
     phoneField.text = @""; 
    } 

    if (textField == phoneField) { 
     nameField.text = @""; 
    } 
} 

Wenn ein Feldtext hat, sollte der andere leer sein. Es funktioniert ohne Probleme außerhalb der Alertview ... aber innerhalb des Blocks wird das andere Feld nicht gelöscht.

Jede Hilfe wäre willkommen.

+0

Warum denken Sie, Sie die eingebauten Textfeld mit Ihren eigenen ersetzen müssen? – rmaddy

+0

Da ich eine der Delegate-Methoden in einer bestimmten Weise verwenden muss ... Es wird nicht funktionieren wie es ist. – dbarrett

+0

Sie können das Textfeld nicht durch Ihr eigenes ersetzen. Sie müssen den Delegierten arbeiten lassen. Aktualisieren Sie Ihre Frage mit relevanten Details zu dem Problem, das Sie haben. – rmaddy

Antwort

2

Ihre globale Variable als Zeiger innerhalb des Blocks zuweisen

[alert addTextFieldWithConfigurationHandler:^(UITextField *aTextField) { 
     GLOBAL_VARIABLE = aTextField;//<- pointer 
     aTextField.delegate = self; 
    }]; 

Dann können Sie richtig Ihre conditionals in der Callback nutzen.

Hinweis: Ersetzen Sie GLOBAL_VARIABLE mit was auch immer Ihre globale Variable textifleds sind

+0

Vielen Dank! – dbarrett

Verwandte Themen