欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

iOS在一个控制器view中添加另一个控制器的view

程序员文章站 2024-03-22 22:53:16
...

一个正在开发的项目,是在MCU视频房间中 添加左右两个列表分别显示用户和聊天信息,
当前的控制器已经有了很多的逻辑代码,所以在此想要先独立生成两个列表各自己的控制器,然后在当前控制器中导入这两个列表控制器的view即可,这两个列表的逻辑在其自己的控制器页面完成。
iOS在一个控制器view中添加另一个控制器的view
首先来个小DEMO,以右边聊天列表为例,为了方便先使用xib。

  • 1.首先创建一个viewController,起名:ChatViewController,xib布局如图:

iOS在一个控制器view中添加另一个控制器的view

  • 2.关联好相关控件之后,遵守协议,实现tableview的相关协议方法。

iOS在一个控制器view中添加另一个控制器的view

  self.chatTableView.dataSource = self;
  self.chatTableView.delegate   = self;
#pragma mark tableview data source
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
  return 3;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
  ChatCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
  cell.chatTextLabel.text = @"我说:123123124sdfsdfs";
  return cell;
}
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
  return 12;
}
  • 3.引入该控制器的view

到要引用该view的控制器

//导入
#import "ChatViewController.h" 
//声明一个属性
@property (nonatomic,strong)ChatViewController* chatVC; //聊天控制器!!
//重点代码   
  self.chatVC = [[ChatViewController alloc]init]; //创建控制器
  [self.view addSubview:self.chatVC.view];    //把控制器的view添加到当前页面
  self.chatVC.view.alpha = 0.6;
  [self addChildViewController:self.chatVC];   //把创建的控制器添加为子控制器!!
  [self.chatVC.view mas_makeConstraints:^(MASConstraintMaker *make) { //约束
  }];

注意:我们在引入其他控制器的view时候,要保证view存活的同时其控制器也是存活的,这样器控制器才可以处理器view的逻辑等,所以在这里有两个方法:
1 是声明一个属性,强引用view的控制器,这样就不用把控制器添加为子控制器。
2 是不声明属性,直接把控制器添加为子控制器,这样也是可以的。