iOS在一个控制器view中添加另一个控制器的view
程序员文章站
2024-03-22 22:53:16
...
一个正在开发的项目,是在MCU视频房间中 添加左右两个列表分别显示用户和聊天信息,
当前的控制器已经有了很多的逻辑代码,所以在此想要先独立生成两个列表各自己的控制器,然后在当前控制器中导入这两个列表控制器的view即可,这两个列表的逻辑在其自己的控制器页面完成。
首先来个小DEMO,以右边聊天列表为例,为了方便先使用xib。
- 1.首先创建一个viewController,起名:ChatViewController,xib布局如图:
- 2.关联好相关控件之后,遵守协议,实现tableview的相关协议方法。
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 是不声明属性,直接把控制器添加为子控制器,这样也是可以的。