在一些应用中,有这样的场景:
在控制器A中需要处理很多逻辑,那么可以将另一个控制器B来作为A的子控制器,帮助A分担一些逻辑处理
childVC.png起到降低耦合度的作用
如:这里定义了3个控制器WBSportMainViewController
、WBSportingViewController
、WBMapViewController
,需要将WBMapViewController作为WBSportingViewController的子控制器
WBSportMainViewController主控制器,负责业务分发
- (IBAction)sportBtnAction:(UIButton *)sender {
WBSportType type = sender.tag;
WBSportingViewController *sportVC = [WBSportingViewController new];
sportVC.sportType = type;
[self presentViewController:sportVC animated:YES completion:nil];
}
WBSportingViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor redColor];
[self setupMapViewController];
}
- (void)setupMapViewController{
WBMapViewController *mapVC = [WBMapViewController new];
[self addChildViewController:mapVC];
[self.view addSubview: mapVC.view];
mapVC.view.frame = self.view.bounds;
mapVC.sportTracking = [[WBSportTracking alloc]initWithType:_sportType];
[mapVC didMoveToParentViewController:self];
}
注意在添加自控制的时候,不要忘记将子�控制器的视图也添加到父控制器中,否则��子控制的view就显示不出来了
WBMapViewController
self.view.backgroundColor = [UIColor yellowColor];
这样便将WBMapViewController设置为了WBSportingViewController的子控制器了
vc.png
网友评论