Show “Back to Menu” Button in iOS NavigationBar with Xamarin.Forms

后端 未结 3 1157
渐次进展
渐次进展 2020-12-18 00:01

I\'m trying to build a cross-platform app using C# and Xamarin.Forms. It contains a slide-out menu implemented in form of a MasterDetailPage. While on Android t

3条回答
  •  被撕碎了的回忆
    2020-12-18 00:22

    I finally found a solution. The code basically needs two minor corrections:

    1. Wrap all DetailPages in a NavigationPage, but not the MasterDetailPage (see #1, #2 and #3 below).
    2. Add an Icon to the MasterPage when on iOS (see #4 below). Don't forget to a the actual PNG(!) to the iOS resources.

    The minimum working example is as follows:

    public static class App
    {
        static MasterDetailPage MDPage;
    
        public static Page GetMainPage()
        {
            return MDPage = new MasterDetailPage { // #1
                Master = new ContentPage {
                    Title = "Master",
                    Icon = Device.OS == TargetPlatform.iOS ? "menu.png" : null, // #4
                    Content = new StackLayout {
                        Children = { Link("A"), Link("B"), Link("C") }
                    },
                },
                Detail = new NavigationPage(new ContentPage { Content = new Label { Text = "A" } }), // #2
            };
        }
    
        static Button Link(string name)
        {
            var button = new Button { Text = name };
            button.Clicked += delegate {
                MDPage.Detail = new NavigationPage(new ContentPage { Content = new Label { Text = name } }); // #3
                MDPage.IsPresented = false;
            };
            return button;
        }
    }
    

提交回复
热议问题