2017-10-21 6 views
0

ユーザーがサイドメニューから「ログアウト」をタップすると、起動画面にナビゲートしようとしているため、ナビゲーションを前のページに戻すことができません。 PushModalAsyncはこれに対応していますが、私のMasterDetailPageからやってもうまくいかないようです。PushModalAsync from MasterDetailPage、Xamarin Forms

Profile.cs

私が試してみました何
public partial class Profile : MasterDetailPage 
    { 
     public List<MasterPageItem> menuList { get; set; } 
     public Profile() 
     { 
      InitializeComponent(); 
      this.lblMessage.Text = Settings.Name + " " + Settings.Surname; 
      menuList = new List<MasterPageItem>(); 
      var page1 = new MasterPageItem() { Title = "Home", Icon = "home.png", TargetType = typeof(Page1) }; 
      var page2 = new MasterPageItem() { Title = "Cards", Icon = "card.png", TargetType = typeof(Cards) }; 
      var page3 = new MasterPageItem() { Title = "Transactions", Icon = "settings.png", TargetType = typeof(Transactions) }; 
      var page5 = new MasterPageItem() { Title = "Log out", Icon = "signout.png", TargetType = typeof(MainPage) }; 


      menuList.Add(page1); 
      menuList.Add(page2); 
      menuList.Add(page3); 
      menuList.Add(page5); 


      navigationDrawerList.ItemsSource = menuList; 
      Detail = new NavigationPage((Page)Activator.CreateInstance(typeof(Page1))); 

     } 
     private void OnMenuItemSelected(object sender, SelectedItemChangedEventArgs e) 
     { 

      var item = (MasterPageItem)e.SelectedItem; 
      Type page = item.TargetType; 

      Detail = new NavigationPage((Page)Activator.CreateInstance(page)); 
      IsPresented = false; 
     } 



    } 

: を私は変数に代入しようとした:

var goToMainPage = Navigation.PushModalAsync(new MainPage()); 

その後、私はそれをしたい場所に追加する:

var page5 = new MasterPageItem() { Title = "Log out", Icon = "signout.png", TargetType = typeof(goToMainPage) }; - しかし、これは私の変数を認識しませんでした。

これを行う別の方法はありますか?ありがとう。

答えて

1

デザインを変更する必要があると思います。

「ログアウト」を押すと、「ログイン」ページ(多分あなたの「メインページ()」に...私は知らない)とこの「ログイン」ページはあなたの " NavigationStack "を選択します。

あなたのシナリオがあるので、場合

  • ページA = LoginPage
  • ページB = MasterDetailPage

はあなたがあなたのApp.cs

Application.Current.MainPage = new PageA(); 
を薄いような何かを行う必要があります(LoginPage後に表示されます)

PageA()の「ログインボタン」を押すと、メインページを変更する必要があります電子

Application.Current.MainPage = new PageB(); 

は、あなたが「ログアウト」を押したときに、あなたがプッシュまたはポップべきではありません...あなただけの「詳細」ページのためのナビゲーションを使用していますが、あなたはあなたのメインページ

Application.Current.MainPage = new PageA(); // Come back to Login 
+0

感謝を変更する必要があります。私はこれを試みたが、助けにはならなかった。 –

+0

これをapp.csに追加するだけで、作業が完了しました。 NavigationPage.SetHasNavigationBar(MainPage、false); –