【发布时间】:2017-04-21 01:46:18
【问题描述】:
我正在尝试使用 component 和 example 在 Xamarin.iOS 中实现侧边菜单。 除了我要关闭侧边菜单的部分之外,一切正常。
现在它的工作原理是这样的:我可以使用 NavigationItem 中的 LeftButton 或手指滑动来打开侧边菜单。但是我不能用这两种方法中的任何一种来关闭它。
有人知道为什么会这样吗?我错过了什么?
另请参阅下面的代码。
主视图
public partial class HomeView : MvxViewController
{
public HomeView() : base("HomeView", null)
{
}
public override void ViewDidLoad()
{
base.ViewDidLoad();
// Perform any additional setup after loading the view, typically from a nib.
CGRect screenRect = UIScreen.MainScreen.Bounds;
NavigationController.View.Frame = new CGRect(0, 0, screenRect.Width, screenRect.Height);
var app = UIApplication.SharedApplication.Delegate as AppDelegate;
NavigationItem.SetLeftBarButtonItem(
new UIBarButtonItem(UIImage.FromBundle("menu"),
UIBarButtonItemStyle.Plain, (sender, e) =>
{
app.SidebarController.ToggleMenu();
}), true);
}
根视图
public partial class RootView : MvxViewController
{
public RootViewModel RootViewModel
{
get { return (RootViewModel)ViewModel; }
set { ViewModel = value; }
}
public RootView() : base("RootView", null)
{
}
public override void ViewDidLoad()
{
base.ViewDidLoad();
// Perform any additional setup after loading the view, typically from a nib.
if (ViewModel == null)
return;
var app = UIApplication.SharedApplication.Delegate as AppDelegate;
app.SidebarController = new SidebarController(this,
CreateViewFor(RootViewModel.Home, false), CreateViewFor(RootViewModel.Menu, true));
app.SidebarController.MenuWidth = 220;
app.SidebarController.ReopenOnRotate = false;
app.SidebarController.MenuLocation = MenuLocations.Left;
}
public override void DidReceiveMemoryWarning()
{
base.DidReceiveMemoryWarning();
// Release any cached data, images, etc that aren't in use.
}
private UIViewController CreateViewFor(IMvxViewModel viewModel, bool navBarHidden)
{
var controller = new UINavigationController();
var screen = this.CreateViewControllerFor(viewModel) as UIViewController;
controller.PushViewController(screen, false);
controller.NavigationBarHidden = navBarHidden;
return controller;
}
【问题讨论】:
-
我不知道你的代码有什么问题。但是我在我的项目中使用了侧边栏导航,它运行得很好。如果你愿意,我可以发布我的代码
-
您也将它与 MVVMCross 一起使用?
-
当我继续对此进行调查时,我发现 RootViewController 位于其他两个控制器(Menu 和 Home ViewControler)之上,它确实阻止了这两个控制器上的所有交互/事件。
标签: ios xamarin xamarin.ios