2017-04-10 80 views
2

我有Xamarin.Forms項目。 我在NavigationPage裏有MasterDetailPage。 我設置了MasterDetailPage的圖標屬性,以便圖標應該設置爲導航欄的左上角位置。但它不起作用。Xamarin形式MasterDetailPage菜單圖標不在iOS上顯示

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屬性,並在Master上設置圖標。有用。 但是,在NavigationPage中有MasterDetailPage而非反之亦然。

+0

我可能是錯的。但Xamarin Docs僅在Master Detail Pages中顯示適用於Android版本的Page Icons,或者您的意思是別的? https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals/navigation/master-detail-page/ – Lepidopteron

+0

默認情況下,iOS上的圖標未顯示,但您通常可以在iOS上添加圖標並將其添加爲該頁面的圖標屬性。它適用於某些情況,但不適用於我的情況。 –

+0

導航頁面是否可能以某種方式覆蓋此屬性設置? – Lepidopteron

回答

-1

我認爲你必須添加到您的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); 
     } 
    } 
} 

在你PCL項目App.xaml.cs你必須添加

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

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

不幸的是,這是誤導,並沒有解決問題。你提出的代碼對於LoadApplication正在做什麼和base.FinishedLaunching調用是多餘的。 – therealjohn

2

解決的辦法是設置的的Icon財產Page用於Master

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

這裏假設你在名爲menuIcon.png資源文件夾這是你想要的漢堡包圖標下您的iOS項目有一個PNG。您還需要在Detail周圍使用NavigationPage,因爲Icon顯示在導航欄區域中。

+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" }; 
    } 
}