MonoTouch的实例化视图控制器编程为ContainerView(MonoTouch Insta

2019-10-17 16:29发布

我想在MonoTouch的容器视图的工作,我在网上下的一些教程。 他们谈论添加和从容器中取出程序视图控制器。 我创建了一个视图控制器和视图在我的项目的故事板和连接几个插座和(分别标签和按钮)一个动作。 我创建了一个重载construc

这是在视图控制器我想viewControllers加入到容器视图的代码。

public override void ViewDidLoad ()
    {
        base.ViewDidLoad ();
        ContainerView.AutoresizingMask = UIViewAutoresizing.FlexibleHeight;
        _controllerOne = new IngredientsController("Perishables");
        _controllerTwo = new IngredientsController("Spices");
        AddChildViewController(_controllerOne);
        ContainerView.AddSubview(_controllerOne.View);
        _controllerOne.DidMoveToParentViewController(this)
    }

当我添加子视图的_controllerOne我得到一个错误,因为我的控制器上的元素被标记为空。 是不能MonoTouch的具有如果控制器是在界面生成器被制成编程方式创建视图控制器的? 下面是两个构造的配料控制器。 当SEGUE被使用,则所有的UI控件正确初始化。 我需要以编程方式创建的控制器,然后初始化它呀? 任何帮助,将不胜感激。

//This ctor does not work
public IngredientsController (string title) : base(NSObjectFlag.Empty)
{
_ingredientTitle = title;
}

//This ctor works
public IngredientsController (IntPtr handle) : base (handle)
{
}

Answer 1:

尝试交换AddSubView()DidMoveToParentViewController()像下面的方法:

public override void ViewDidLoad ()
{
    base.ViewDidLoad ();
    ContainerView.AutoresizingMask = UIViewAutoresizing.FlexibleHeight;
    _controllerOne = new IngredientsController("Perishables");
    _controllerTwo = new IngredientsController("Spices");
    this.AddChildViewController(_controllerOne);        // Root child controller.
    _controllerOne.DidMoveToParentViewController(this); // Confirm the rooting.
    ContainerView.AddSubview(_controllerOne.View);      // Access the view.
}


Answer 2:

尝试实例化这样的视图控制器:

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

        this.ContainerView.AutoresizingMask = UIViewAutoresizing.FlexibleHeight;

        var newController = this.Storyboard.InstantiateViewController("IngredientsController");

        this.AddChildViewController (newController);        
        this.ContainerView.AddSubview (mapController.View);
    }

确保你在属性面板中的视图控制器设置故事板标识



文章来源: MonoTouch Instantiating a ViewController programmatically for ContainerView