/ / Monotouch Dialog Json, EntryElement utilise EntryEnded Event - json, events, xamarin.ios, monotouch.dialog

Monotouch Dialog Json, EntryElement utilise EntryEnded Event - json, events, xamarin.ios, monotouch.dialog

Je dois utiliser MTD avec Json pour créer des formulaires de manière dinamycale, mais je dois également vérifier l'entrée utilisateur:

Certains champs peuvent n'accepter que des chiffres, d'autres ont une longueur fixe, etc.
Cela peut être fait avec une action qui vérifie chaque valeur EntryElement par rapport aux conditions spécifiées, puis en utilisant une messagerie pour informer l'utilisateur des corrections nécessaires.

Si nous avons un petit nombre de champs, c'est OK, maisquand on a plus de 50 champs, cela s'avère très gênant en termes de convivialité. La solution idéale serait d'informer l'utilisateur des corrections, au moment où l'utilisateur termine de taper dans EntryElement

Maintenant, MTD fournit une sorte de mécanisme pour ce faire:

JsonElement jsonElement;
jsonElement = JsonObject.Load("file.json");
((EntryElement) jsonElement["field_1"]).EntryEnded = delegate { doSomething();};

À condition que «field_1» soit un EntryElement marqué avec l'attribut id avec la valeur «field_1»
Le code ci-dessus fonctionne comme prévu, c'est-à-dire: lorsque je change le focus sur une autre partie, l'événement EntryEnded s'active. Maintenant, pour la question à un million de dollars:

Comment savoir à quel EntryElement l'événement correspond? ou en d'autres termes.
Comment obtenir l'ID de EntryElement lors de l'appel à l'événement?

Si rien de ce qui précède n'est possible, quelle serait la solution appropriée?

Merci d'avance pour tout prospect,

Réponses:

0 pour la réponse № 1

Trouvé un moyen de le faire:

((EntryElement)jsonElement ["field_1"]).EntryEnded += (object sender, EventArgs e ) =>
{
NSIndexPath pt = ((EntryElement)sender).IndexPath;
Console.WriteLine("section: "+pt.Section+" row: "+pt.Row);
};

Cette petite chose imprimera la section et leLigne de EntryElement qui a reçu l'événement EntryEnded. Ce n'est pas exactement comme obtenir l'identifiant, mais au moins maintenant, j'ai des informations sur son emplacement, et à partir de cela, je peux obtenir beaucoup plus d'informations (surtout si j'ai pris soin de l'enregistrer ailleurs)

C'est probablement un truc de base, mais je ne l'ai trouvé nulle part ailleurs!