ios如何在一個控制器中添加另外一個控制器

最近的項目因爲項目須要,涉及過屢次在當前控制器上添加另外一個控制器的View問題。這裏作個筆記,爲了方便,當前視圖控制器記爲控制器1,添加的視圖記爲控制器2
第一種狀況:

1.首先,由於控制器2的視圖上有須要與用戶交互的需求,因此必定要設置2爲1的子控制器設計

      ViewController *vc2 = [[ViewController alloc]init];
      [self addChildViewController:vc2];code

    ps:當有多個子視圖時還可能用到,子控制器的removeFromParentViewController方法對象

2.關於2的view的建立rem

  由於view的建立涉及到2的viewdidload方法,因此在控制器1的方法裏面不要再從新建立vc2的view,否則建立的是另外一個對象。在這裏只須要根據須要設計vc2的view的frame就能夠了。以下:it

    vc2.view.frame = CGRectMake(0, 108, kScreenWidth, kScreenHeight-108);table

 

 

第二種狀況:
  • 咱們建立一個ZYTestViewController : UITableViewController 
    而後咱們稍微實現如下tableview的數據源方法

就先別搞那麼複雜先,就這樣完成了一個UITableViewController的建立class

  • 接下來咱們把這個控制器的view添加到咱們的主控制中(UIViewController)
 

而後咱們看一下,是否有咱們想要的效果: 
view的顯示 
咱們是確實能將這個tableView添加上去了,可是出現了不能顯示數據的問題。變量

  • 緣由在於:咱們的ZYTestViewController控制器死了,由於是一個局部變量,因此致使咱們的數據不能顯示。形成一個控制的view還在,可是這個view的控制器死了,這個很是危險的一件事情。
  • 因此咱們就急迫的須要保住這個控制器,那麼咱們就須要對這個控制器進行強引用。

咱們再看一下效果: 
view的顯示 
只有這樣才能顯示咱們的Cell的數據引用

因此得出一個結論:只要view在,view所在的控制器必須得在,這樣才能保證view內部的數據和業務邏輯正常方法

相關文章
相關標籤/搜索