addchildviewcontroller管理视图

有些时候,在和其他工程整合时没办法得到当前的视图控制器进行操作,通过addchildcontroller将视图控制器收集起来统一管理是个很不错的办法。

比如最近有个工程,要和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.log isEqualToString:@"1"]) {

        [self.view addSubview:cus.view];

        [cus initView];

    }else{

        [self.view addSubview:lonin.view];

    }


login  delegte

//登录成功后跳转到详情

-(void)didLogin

{

    [self transitionFromViewController:lonin toViewController:cus duration:1 options:UIViewAnimationOptionLayoutSubviews animations:^{

        

    } completion:^(BOOL finished) {

        [cus initView];

    }];

}

cus delegete

//详情返回则根控制器自动释放

-(void)customerViewControllerWillDismiss

{

    [self dismissViewControllerAnimated:YES completion:nil];

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值