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

问题描述 投票:2回答:4

我有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);
    }
}

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

ios xaml xamarin xamarin.ios xamarin.forms
4个回答
5
投票

解决方案是设置用于IconPageMaster属性。

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

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


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

0
投票

如果它可以帮助某人你可以在设置MainPage之前设置菜单的标题,就像我在下面的示例代码中所做的那样:

var master = new MasterPage();
master.Master.Icon = "my_icon.png";
master.Master.Title = AppResources.Menu; // To get the value from resource files
MainPage = master;

MasterPage继承自MasterDetailsPage由于Xamarin的奇怪错误,我无法直接设置MasterPage的构造函数的值。


-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);
        }
    }
}

App.xaml.cs的PCL项目中,您必须添加

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

public static Page GetMainPage()
{
    return new RootPage();
}
© www.soinside.com 2019 - 2024. All rights reserved.