我正在尝试使用C#和Xamarin.Forms构建一个跨平台应用程序。它包含一个以
我将其简化为以下最小示例,源自于Xamarin解决方案模板“空白应用程序(Xamarin.Forms共享)”,并替换了
解决方案以及相关的截图可以在GitHub中找到。
我的想法是在iOS特定的代码中,在AppDelegate类中修改
将
我可以通过
MasterDetailPage
形式实现的侧滑菜单。在Android上,有一个位于左上角的带有应用程序图标的按钮,可切换侧滑页面,但是在iOS上没有这样的导航栏项目。我将其简化为以下最小示例,源自于Xamarin解决方案模板“空白应用程序(Xamarin.Forms共享)”,并替换了
App
-class的实现。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
为空。将
GetMainPage()
的返回类型从Page
改为NavigationPage
并不能解决问题。我可以通过
MDPage.ToolbarItems.Add(...)
来添加工具栏项,但它们会出现在顶部的右侧角落。
MainMenu
的按钮 - 就像在Android中一样。 - FalkoMainActivity
中,如果当前IsPresented
为true
,则可以重写OnBackPressed
并将其设置为false
。 - Falko