2013-02-01 36 views
1

我想在MonoTouch的容器視圖的工作,我在網上下的一些教程。他們討論從容器中以編程方式添加和刪除視圖控制器。我創建了一個視圖控制器和視圖在我的項目的故事板和連接幾個插座和(分別標籤和按鈕)一個動作。我創建了一個重載construcMonoTouch的實例化視圖控制器編程爲ContainerView

這裏是在視圖控制器我想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) 
{ 
} 

回答

0

嘗試交換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. 
} 
0

嘗試實例化這樣的視圖控制器:

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); 
    } 

確保您在設定故事板標識屬性面板的視圖控制器

相關問題