Xamarin UI菜单和视图之间的导航

时间:2014-04-18 14:27:32

标签: c# ios uinavigationcontroller xamarin.ios

我正在尝试使用Xamarin构建我的第一个iOS应用程序,并且我使用this project向左侧添加了facebook样式菜单,但是我遇到了一些问题显示。

我在app委托中加载菜单和我的第一个视图控制器,如下所示:

public override bool FinishedLaunching(UIApplication app, NSDictionary options)
    {
        window = new UIWindow(UIScreen.MainScreen.Bounds);
        Menu = new SlideoutNavigationController();
        Menu.SlideHeight = 9999f;
        Menu.TopView = new InitialController();
        Menu.MenuViewLeft = new DummyControllerLeft();
        Menu.LeftMenuButtonText = "Menu";

        window.RootViewController = Menu;
        window.MakeKeyAndVisible();

        return true;
    }

这很好用,页面加载了菜单,如果我使用菜单导航,那么所有工作都按预期工作。问题是我有从其他输入发生的导航,例如主页上的按钮按下,而不是通过菜单。当发生这种情况时,它会加载正确的页面,放置菜单按钮不再存在,我可以从左侧拖动进入菜单,但按钮丢失。我使用这样的东西移动到这个页面,这段代码是在FirstController类的ViewDidLoad函数中(用作菜单顶视图的那个)

NavigationController.PushViewController(new OnlineMembersViewController(false), true);

我对此非常陌生,所以我想我正在做些傻事。

1 个答案:

答案 0 :(得分:2)

您应该手动添加该按钮。如果您查看SlideoutNavigationController的来源,您会看到它仅为您在侧边菜单中导航的视图控制器添加菜单按钮。因此,您应手动设置View.NavigationItem.RightBarButtonItemView.NavigationItem.RightBarButtonItem,并为其他视图控制器添加触摸事件调用ShowMenuRight/ShowMenuLeft

private void SomeEvent(object sender, EventArgs e)
{
    ((AppDelegate)UIApplication.SharedApplication.Delegate).Menu.ShowMenuRight(); 
    //or
    //((AppDelegate)UIApplication.SharedApplication.Delegate).Menu.ShowMenuLeft(); 
}