首页 > 代码库 > addchildviewcontroller管理视图
addchildviewcontroller管理视图
比如最近有个工程,要和u3d进行整合,首页界面是u3d做的然后在xcode进行扩张,跳转到新的视图控制器必须能返回,当然一级跳转可以直接模态消失,但有二级跳转回首页就出现问题了。首页—登录—详情。详情的返回要回到首页而不是登录。所以首先想到的是通过navagation设置首页为root直接pop到root。但u3d不让我获取首页的controller,所以只能想通过模态连续跳转,这时候问题出现了,向前跳转很顺畅,但没办法连续dismiss。这时候addchildtroller就会是不错的选择。因为一级跳转可以直接dismiss,我只需将所有二级跳转的controller都addchildcontroller到一个作为父controller的一级跳转中操作父controller即可。父congtroller管理子controller显示,父controller消失则子vontroller也全部被释放。
代码如下
初始化需要管理的两个视图控制器
lonin =[[LogInViewController alloc]init];
lonin.delegete= self;
cus =[[CustomerViewController alloc]init];
cus.delegete= self;
[self addChildViewController:lonin];
[self addChildViewController:cus];
Client *cliren =[Client returenClient];
if([cliren.logisEqualToString:@"1"]){
[self.viewaddSubview:cus.view];
[cusinitView];
}else{
[self.viewaddSubview:lonin.view];
}
login delegte
//登录成功后跳转到详情
-(void)didLogin
{
[selftransitionFromViewController:lonintoViewController:cusduration:1options:UIViewAnimationOptionLayoutSubviewsanimations:^{
} completion:^(BOOLfinished) {
[cusinitView];
}];
}
cus delegete
//详情返回则根控制器自动释放
-(void)customerViewControllerWillDismiss
{
[selfdismissViewControllerAnimated:YEScompletion:nil];
}
addchildviewcontroller管理视图