2017-04-10 8 views
2

私はXamarin.Formsプロジェクトを持っています。 NavigationPage内にMasterDetailPageがあります。 アイコンがナビゲーションバーの左上の位置に設定されるように、MasterDetailPageのiconプロパティを設定します。しかし、それは動作しません。XamarinはiOSにMasterDetailPageメニューアイコンを表示しません

public partial class App : Application 
{ 
    public App() 
    { 
     InitializeComponent(); 

     var masterDetailpage = new MasterDetailPage { 
      Icon = "menuIcon.png", 
      Master = new Page { Title = "Sample"}, 
      Detail = new Page() 
     }; 

     MainPage = new NavigationPage(masterDetailpage); 
    } 
} 

これは決して機能しません。 NavigationPageをMasterDetailPageのDetailプロパティとして配置し、マスターにアイコンを設定するとします。できます。 しかし、NavigationPage内にMasterDetailPageを持つことは非常に重要です。

+0

私が間違っている可能性があります。しかし、Xamarin Docsは、マスター詳細ページのAndroidバージョンのページアイコンしか表示しないか、何か別の意味ですか? https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals/navigation/master-detail-page/ – Lepidopteron

+0

デフォルトでは、iOSのアイコンは表示されませんが、通常はiOSにアイコンを追加してページのアイコンプロパティそして、それはいくつかのケースでは動作しますが、私のものでは動作しません。 –

+0

ナビゲーションページがこのプロパティの設定を何とかオーバーライドする可能性がありますか? – Lepidopteron

答えて

-1

は、私はあなたが持っている

public App() 
{ 
    // The root page of your application 
    MainPage = GetMainPage(); 
} 

public static Page GetMainPage() 
{ 
    return new RootPage(); 
} 
+0

残念ながら、これは誤解を招き、問題を解決しません。あなたが提案したコードは、LoadApplicationがやっていることとbase.FinishedLaunching呼び出しのために冗長です。 – therealjohn

2

溶液はIconプロパティを設定することですを追加するためにあなたがApp.xaml.csであなたのPCLプロジェクトでは、共通の修正をあなたのAddDelegate

namespace myApp.iOS 
{ 
    [Register("AppDelegate")] 
    public partial class AppDelegate : 
         global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate 
    { 
     UIWindow window; 

     public override bool FinishedLaunching(UIApplication app, NSDictionary options) 
     { 
      global::Xamarin.Forms.Forms.Init(); 

      // fix for iOS 
      window = new UIWindow(UIScreen.MainScreen.Bounds); 
      window.RootViewController = App.GetMainPage().CreateViewController(); 
      window.MakeKeyAndVisible(); 

      LoadApplication(new App()); 

      return base.FinishedLaunching(app, options); 
     } 
    } 
} 

を追加すると思いますがMasterのために使用されている。

var masterDetailpage = new MasterDetailPage {    
     Master = new Page { Title = "Sample", Icon = "menuIcon.png"}, 
     Detail = new NavigationPage(new Page()) 
    }; 

これは、あなたが欲しいハンバーガーのアイコンであるmenuIcon.pngという名前のResourcesフォルダの下に、あなたのiOSのプロジェクトでPNGを前提としています。また、Iconがナビゲーションバー領域に表示されるので、Detailの周りにNavigationPageを使用する必要があります。

+0

ありがとうございます。最後に私の質問を読んだ場合は、あなたが書いたものを書きます。しかし、この種の構造は異なった働きをします。なぜなら、私がNavigationPage内にMasterDetailPageを持っていて、あなたが言及した方法ではなく –

0

ナビゲーションページにマスターページをラップする場合は、アイコンをナビゲーションページに配置します。

これが私の作品:

public partial class App : Application 
{ 
    public App() 
    { 
     InitializeComponent(); 

     var masterDetailpage = new MasterDetailPage { 
      Icon = "menuIcon.png", 
      Master = new Page { Title = "Sample"}, 
      Detail = new Page() 
     }; 

     MainPage = new NavigationPage(masterDetailpage) { Title = "Sample", Icon = "menuIcon.png" }; 
    } 
} 
関連する問題