Xamarin形成iOS上未显示的MasterDetailPage菜单图标

mis*_*iga 3 xaml xamarin.ios ios xamarin xamarin.forms

我有Xamarin.Forms项目.我在NavigationPage里面有MasterDetailPage.我设置了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);
    }
}
Run Code Online (Sandbox Code Playgroud)

这永远不会奏效.如果我将NavigationPage作为MasterDetailPage的Detail属性,并在Master上设置图标.有用.但是在NavigationPage中包含MasterDetailPage非常重要,反之亦然.

the*_*ohn 5

该解决方案是设置Icon了的属性Page用于感Master.

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

这假设你的iOS项目中有一个png,名为Resources文件夹menuIcon.png,它是你想要的汉堡包图标.您还需要使用a NavigationPage,Detail因为Icon它显示在导航栏区域中.


Enr*_*ico -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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在你的 PCL 项目中App.xaml.cs你必须添加

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

public static Page GetMainPage()
{
    return new RootPage();
}
Run Code Online (Sandbox Code Playgroud)