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


最近的項目由於項目需要,涉及過多次在當前控制器上添加另一個控制器的View問題。這里做個筆記,為了方便,當前視圖控制器記為控制器1,添加的視圖記為控制器2
第一種情況:

1.首先,因為控制器2的視圖上有需要與用戶交互的需求,所以一定要設置2為1的子控制器

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

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

2.關於2的view的創建

  因為view的創建涉及到2的viewdidload方法,所以在控制器1的方法里面不要再重新創建vc2的view,不然創建的是另一個對象。在這里只需要根據需要設計vc2的view的frame就可以了。如下:

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

 

 

第二種情況:
  • 我們創建一個ZYTestViewController : UITableViewController 
    然后我們稍微實現以下tableview的數據源方法

就先別搞那么復雜先,就這樣完成了一個UITableViewController的創建

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

然后我們看一下,是否有我們想要的效果: 
view的顯示 
我們是確實能將這個tableView添加上去了,但是出現了不能顯示數據的問題。

  • 原因在於:我們的ZYTestViewController控制器死了,因為是一個局部變量,所以導致我們的數據不能顯示。造成一個控制的view還在,但是這個view的控制器死了,這個非常危險的一件事情。
  • 所以我們就急迫的需要保住這個控制器,那么我們就需要對這個控制器進行強引用。

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM