如何在故事板中使用 xamarin 侧边栏

How to use xamarin sidebar with storyboard

我正在尝试创建一个带有侧边栏抽屉式导航的应用程序,但是控件是硬编码在您的控制器中的,就像我在示例中看到的那样,我想要的是我的侧边栏菜单,内容将在情节提要中设计,问题是我真的不知道从哪里开始。

rootviewcontroller.cs

using MonoTouch.Foundation;
using MonoTouch.UIKit;
using System;
using System.CodeDom.Compiler;
using SidebarNavigation;
namespace Casebook.IOS
{
public partial class RootViewController : UIViewController
{
    public SidebarController sideBar { get; private set; }

    public RootViewController() : base(null,null){

    }

    public override void ViewDidLoad ()
    {
        base.ViewDidLoad ();
        sideBar = new SidebarController (this,new  ContentViewController(), new SideMenuController());
        sideBar.MenuLocation = SidebarController.MenuLocations.Left;
    }
}

sidemenucontroller.cs

using MonoTouch.Foundation;
using MonoTouch.UIKit;

namespace Casebook.IOS
{
    public partial class SideMenuController : BaseController
    {
    public SideMenuController () : base(null,null)
    {
    }
    public override void ViewDidLoad ()
    {
        base.ViewDidLoad ();
    }
}

contentviewcontroller.cs

using System;
using System.Drawing;
using MonoTouch.Foundation;
using MonoTouch.UIKit;

namespace Casebook.IOS
{

public partial class ContentViewController : BaseController
{
    public ContentViewController():base(null,null)
    {
    }

    public override void ViewDidLoad ()
    {
        base.ViewDidLoad ();

    }
}

所以基本上我的代码中没有任何内容,因为我的 ui 是从我的情节提要中初始化的。

附加是我设置故事板的方式,每个视图都已由各自的控制器设置 类。

http://i.stack.imgur.com/Vttcf.png

iOS 设计器中不支持 drawer/sidebar/slider/flyout/[您的别名] 菜单。

您可以在设计器中设计要使用的视图控制器的内容,然后从情节提要中加载它们并在侧边栏控制器中进行设置。

在您的故事板中,为菜单控制器和内容控制器提供一个故事板 ID,然后使用 UIStoryboard.InstantiateViewController(string) 在您的代码中创建它们的实例(您需要将结果转换为实际的 UIViewController 子类).

假设您在某个视图控制器的 ViewDidLoad() 中:

var content = this.Storyboard.InstantiateViewController ("ContentControllerId") as ContentViewController;
var menu = this.Storyboard.InstantiateViewController ("MenuControllerId") as SideMenuController;

sideBar = new SidebarController (this, content, menu);