2017-05-01 6 views
0

私は通常のウィンドウよりもポップアップビューを使用できるアプリケーションを持っています。 ユーザーがログインする必要があるデータを取得するため、私はトークンを持っています。 トークンがない場合は誰でも経験をしていますが、最初にビューを表示してから、どこに向かっていたのですか?MvvmCrossはさらに進む前にビューを表示

それをより明確にする:

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

問題は今、ビューが示されており、すぐにGetDataメソッドを開始しますが、彼は何のトークンやクラッシュを持っていないので、タスクが実行されていることです。

任意のアイデアや修正はあなたがInitでナビゲーションを行うべきではありません

答えて

1

歓迎されています。あなたは本質的にあなたがナビゲート中のページから離れてナビゲートしています。 Initが呼び出されたとき、ナビゲーションの実行は終了しません。

ShowViewModelから結果が得られないため、InsertPasswordViewModelのすべてを完了したときに何かを返すことに頼ることはできません。

あなたが探しているのは、どこから来たのかを示す何らかのパラメータでViewModelにナビゲートしていることでしょう。次に、InsertPasswordViewModelにパスワードがOKになったら、そのパラメータを使用して戻るようにします。 ビュー階層も変更したいと思うかもしれません。これは、カスタムプレゼンターと一連のプレゼンテーションヒントを使って行うことができます。

+0

こんにちはCheesbaron、あなたの明確な答えに感謝します。私はinitを介してナビゲートするのを防ぐことを認識していますが、他のビューではTask.Delayで動作します。私はMvxBundleの経験が少ないですが、もっと使うべきだと思います。 –

+0

MvxRequestedByの例がどこにありますか? –

+0

単なるenumです。それはどこにも使用されておらず、5.xで削除されています。ただそれを何にでも設定してください。 – Cheesebaron

関連する問題