2017-05-01 1 views
0

J'ai une application où je peux utiliser des vues popup sur les fenêtres normales. Pour obtenir les données dont l'utilisateur a besoin pour se connecter, j'ai un jeton. Quelqu'un a-t-il déjà fait l'expérience du chemin s'il n'y a pas de jeton, montrez d'abord une vue, puis allez plus loin où vous vous dirigiez?MvvmCross afficher la vue avant d'aller plus loin

Pour le rendre plus clair:

public void Init() 
{ 
    if (!CheckToken()) 
    { 
     Task.Run(() => ShowViewModel<InsertPasswordViewModel>()) 
        .ContinueWith(t => GetData()); 
    } 
    else 
    { 
     //Do your thing 
     GetData(); 
    } 
} 

Le problème est maintenant que la tâche est exécutée si vue est affiché et commence immédiatement à GetData mais il n'a pas de jeton et les accidents.

Toutes les idées ou corrections sont les bienvenus

Répondre

1

Vous ne devriez pas faire la navigation dans Init. Vous naviguez essentiellement loin d'une page sur laquelle vous êtes en train de naviguer. La navigation n'est pas terminée lorsque Init est appelée. Vous n'obtenez pas non plus un résultat de ShowViewModel, donc vous ne pouvez pas compter sur celui qui retourne quelque chose lorsque vous avez terminé avec InsertPasswordViewModel.

Ce que vous cherchez probablement navigue à votre ViewModel avec une sorte de paramètre dire où vous êtes venu. Puis laissez InsertPasswordViewModel utiliser ce paramètre pour revenir en arrière une fois que le mot de passe est OK. Vous souhaitez probablement également modifier la hiérarchie View, ce que vous pouvez faire via un présentateur personnalisé et un ensemble d'indicateurs de présentation.

+0

Salut Cheesbaron, merci pour votre réponse claire. Je suis conscient d'empêcher de naviguer via l'init, mais d'un autre point de vue, je l'ai fait fonctionner avec un Task.Delay. J'ai moins d'expérience avec le MvxBundle mais je pense que je devrais l'utiliser plus. –

+0

savez-vous où un exemple peut être trouvé de la MvxRequestedBy? –

+0

C'est juste une énumération. Il n'est pas utilisé n'importe où et a été supprimé dans 5.x. Juste le régler à n'importe quoi. – Cheesebaron