私はXamarin.iOSでこのメニューcomponentとこのexampleを使ってサイド・メニューを実装しようとしています。 サイドメニューを閉じる部分以外はすべて正常に機能しました。サイド・メニューが閉じない - Xamarin.iOS
これは次のように動作します:NavigationItemの左ボタンまたは指のスワイプを使用してサイドメニューを開くことができます。しかし、私はこれらの2つの方法のいずれかでそれを閉じることはできません。
これはなぜ起こっているのですか?私は何が欠けていますか?
以下のコードも参照してください。
HomeView
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);
}
RootView
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;
}
あなたのコードに何が問題なのか分かりません。しかし、私は自分のプロジェクトでサイドバーナビゲーションを使用していますが、うまくいきます。あなたが望むなら、私は自分のコードを掲示することができます – HeisenBerg
あなたはMVVMCrossでも使っていますか? –
私はこれを調査し続けて、RootViewControllerが他の2つのコントローラ(MenuおよびHome ViewControler)の上にあり、それらの2つのすべての相互作用/イベントをブロックしていることがわかりました。 –