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内部的数据和业务逻辑正常方法

相关文章
相关标签/搜索