2017-07-20 7 views
0

私は、最初のページにリストビューを持つxamarinフォームTabbedPageページを持っています。私はリストビューをクリックすると、リストビューアイテムがそのアイテムに関する詳細を表示するページに移動するので、タブを非表示にしたいと思っています。これはユーザーが戻るボタンを押すことができるだけの理由ですTabbedPageに戻るには)...これをどのように達成するのですか?Xamarinフォーム詳細ページのTabbedを非表示にしますが、バックボタンを保持します

はこれまでのところ、私はそれを持っている最も近いどのように私は詳細ページを作るのです...しかし、私は私の背中のボタンを失うに再割り当てApp.Current.MainPage

ListView_ItemSelected(object sender, SelectedItemChangedEventArgs e) 
{ 
App.Current.MainPage= new NavigationPage(new MyNewPage()); 
} 

ました詳細ページのタブを非表示にして、戻るボタンを失うことはありませんか? (それは最も一般的なアンドロイドアプリでよく行われるようです)

私がしようとしていることを説明するための最良の例は、Deltaの「Fly Delta」アンドロイドアプリです。メイン画面には、TabbedPageがあります。 「最近の活動」をクリックすると、タブのない詳細ページに送られますが、詳細ページには戻るボタンがあります。戻るボタンをクリックすると、私はTabbedPageに私を送ります。

TabbedPage

Details Page

+0

切り替えないでくださいメインページ。メインページをナビゲーションページにし、タブページをメインページ内に追加する –

答えて

0

あなたのようなあなたのTabbedPage何かのカスタムレンダラを作成する必要があります:私はこれを使用していますAndroidの場合

public class CustomTabbedPage : TabbedPage 
{ 
     public static readonly BindableProperty TabBarHiddenProperty = 
     BindableProperty.Create("TabBarHidden", typeof(bool), typeof(CustomTabbedPage), false); 

     public bool TabBarHidden 
     { 
      get { return (bool)GetValue(TabBarHiddenProperty); } 
      set { SetValue(TabBarHiddenProperty, value); } 
     } 
} 

using System; 
using yourAppName; 
using yourAppName.iOS; 
using Xamarin.Forms; 
using Xamarin.Forms.Platform.iOS; 

[assembly:ExportRenderer(typeof(CustomTabbedPage), typeof(CustomTabbedPageRenderer))] 
namespace yourAppName.iOS 
{ 
    public class CustomTabbedPageRenderer : TabbedRenderer 
    { 
     protected override void OnElementChanged(VisualElementChangedEventArgs e) 
     { 
      base.OnElementChanged(e); 

      this.Tabbed.PropertyChanging += (sender, eventArgs) => { 
       if (eventArgs.PropertyName == "TabBarHidden" && TabBar.SelectedItem == TabBar.Items[3]) 
       { 
        bool tabBarHidden = !tmp.TabBarHidden; 
        TabBar.Hidden = tabBarHidden; 
        Console.WriteLine(View.Frame.Width + " " + View.Frame.Height); 

       // The solution to the space left behind the invisible tab bar 
        if(TabBar.Hidden) 
         View.Subviews[1].Frame = new CoreGraphics.CGRect(View.Subviews[1].Frame.X, View.Subviews[1].Frame.Y, View.Subviews[1].Frame.Width, 0); 
        else 
         View.Subviews[1].Frame = new CoreGraphics.CGRect(View.Subviews[1].Frame.X, View.Subviews[1].Frame.Y, View.Subviews[1].Frame.Width, 49); 

       } 
      }; 


     } 
    } 
} 

を:https://github.com/thrive-now/BottomNavigationBarXF

関連する問題