使用Xamarin.Forms在iOS NavigationBar中显示“返回菜单”按钮

前端之家收集整理的这篇文章主要介绍了使用Xamarin.Forms在iOS NavigationBar中显示“返回菜单”按钮前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用C#和Xamarin.Forms构建一个跨平台的应用程序.它包含以MasterDetailPage形式实现的滑出菜单.在 Android上,左上角有一个带有应用程序图标的按钮,用于切换滑出页面,iOS上没有这样的导航栏项目.

我将其分解为以下从Xamarin解决方案模板“Blank App(Xamarin.Forms Shared)”派生的最小示例,并替换了App类的实现:

public class App
{
    static MasterDetailPage MDPage;

    public static Page GetMainPage()
    {
        return new NavigationPage(
            MDPage = new MasterDetailPage {
                Master = new ContentPage {
                    Title = "Master",Content = new StackLayout {
                        Children = { Link("A"),Link("B"),Link("C") }
                    },},Detail = new ContentPage { Content = new Label { Text = "A" } },});
    }

    static Button Link(string name)
    {
        var button = new Button { Text = name };
        button.Clicked += delegate {
            MDPage.Detail = new ContentPage { Content = new Label { Text = name } };
            MDPage.IsPresented = false;
        };
        return button;
    }
}

解决方案以及生成的屏幕截图可在GitHub找到.

我的想法是在iOS特定的代码添加这样一个“菜单”或“后退”按钮,修改AppDelegate类中的window.RootViewController.NavigationController.NavigationBar.但是window.RootViewController.NavigationController为null.

用NavigationPage而不是Page替换GetMainPage()的返回类型没有帮助.

我可以通过MDPage.ToolbarItems.Add(…)添加工具栏项,但它们出现在右上角.

解决方法

TL; DR

实质上,您的详细信息页面需要包含在NavigationPage中,以便后退按钮显示在iOS中.

这是我如何构建我的应用程序的示例.

App.cs

public static INavigation Navigation { get; set; }

    public static Page GetMainPage(IContainer container)
    {
        return new MainPage();
    }

MainPage.cs

public class MainPage : MasterDetailPage
{

    public MainPage()
    {
        Title = "Some Title";
        var master = new MainMenu();
        var detail = new NavigationPage(new FirstPage());

        if (App.Navigation == null)
        {
            App.Navigation = detail.Navigation;
        }

        Master = master;
        Detail = detail;
    }
}

现在您已经完成了这项工作,您的导航抽屉将按预期运行,您的ActionBar也将如此.

如果要在整个应用程序中导航,请使用静态定义的导航

await App.Navigation.PushAsync(new FooPage());
// or
await App.Navigation.PopAsync();
原文链接:https://www.f2er.com/iOS/334240.html

猜你在找的iOS相关文章