2017-07-28 21 views
2

複数のページをモーダルに1つのアクションとしてプッシュしたい状況がいくつかあります。 1つの状況は私のメインページを初期化し、その上にスプラッシュページを押したい、私のアプリケーションの開始時です。私は、これは私のメインページが先に読み込まれ、スパッシュページがその上にプッシュされるので、これは、アプリケーションを初期化するためのきれいな方法だと思う。ユーザーがスプラッシュページを閉じると、スプラッシュページがポップアップして表示されます。現在、私は自分のアプリケーションクラスでfollwingん:アンドロイドすべてが期待通りに動作上、iOSの上でスプラッシュページでオーバーレイよりも、あるメインページが表示されている短い時間枠は、ありながらXamarinフォームで複数のページをプッシュ

public App() 
    { 
     InitializeComponent(); 

     MainPage mainPage = new MainPage(); 
     SplashPage splashPage = new SplashPage(); 
     MainPage = mainPage; 
     mainpage.Navigation.PushModalAsync(splashPage,false); 
    } 

私の問題は、あります。これはよく見えず、ユーザーのために退屈です。

私はスプラッシュページをメインページとして設定し、スプラッシュページを却下したときに別のページと交換するなど、上記の例を他の方法で処理できることを認識しています。しかし、私はそれが簡単ではない他の状況があり、ページスタックを先に設計するのは論理的です。

私の質問は、iOSの短い時間枠で各ページを表示せずにいくつかのページをモーダルスタックにプッシュする方法です。

答えて

4

私の答えはNavigation.InsertPageBefore()です。

あなたのスプラッシュページをメインページのスーパーシンプルなバージョンのように見せるようになりました。明らかに、世界中のスタイリッシュなスプラッシュページを表示したいので、多くの人がそれを気に入っていません。しかし、あなたはこれと同じ考えを使うことができるかもしれません。あなたのスプラッシュページが赤い背景で中央にロゴがある場合は、ContentPageを赤の背景にしてPushModalAsyncスプラッシュページを上にしてから、ContentPageの前にメインページを追加することができます。それが完了すると、あなたはスプラッシュをポップすることができ、ユーザーはメインを凝視したままになります。

コード時間:

ContentPage basicSplash = new ContentPage { BackgroundColor = Color.Red }; 
NavigationPage nav = new NavigationPage(basicSplash); //Do Navigation Page here with basic in it 

MainPage = nav; //Set basic splash 

nav.Navigation.PushModalAsync(new SplashPage(), false); //Show SplashPage modal over basic 

nav.Navigation.InsertPageBefore(new MainPage(), basicSplash); //You are now adding MainPage to the NavigationStack, not the ModalStack 

nav.Navigation.RemovePage(basicSplash); //Remove basic splash, so now only MainPage is left sitting in NavigationStack 

//Now you can do nav.PopModalAsync() when ready and the user should be looking at the MainPage since there is nothing left in the ModalStack and only MainPage is sitting in the NavigationStack 

ここでの唯一の問題はあなたがどちらかあなたにmainPageを設定し、スタックからページを削除することによってbasicSplashに戻ってからユーザーを防ぐために必要があるだろうということでしょう.... MainPage、または戻るボタンを削除して、または上書きすることによってContentPage.OnBackButtonPressed

+0

Thx、insertPageを実行する必要があります。私はAndroidバックボタンの動作を確認する必要があります – Kedu

+0

今日、InsertPageBefore()を試しましたが、悲しいことに私にとってはうまくいきません。私はモーダルページで作業しており、モーダルページにはInsertPageBefore()がないようです。 – Kedu

+0

@Kedu申し訳ありません。それについても考えなかった。そうすれば実際にはそれは簡単だろう。編集をチェックしてください。 – hvaughan3

関連する問題