从当前上下文推送导航

时间:2017-04-19 14:04:07

标签: ios objective-c uinavigationcontroller presentviewcontroller

您好我有两个Viewcontroller A B ,我正在使用 A 控制器呈现 B 控制器< strong>当前上下文,我在下面粘贴了我的编码。所有我想从 B 控制器推送到 C 控制器,我知道当我们出现时没有分配导航控制器,如果我提供带有rootviewcontroller的navigationcontroller我无法实现透明结果。< / p>

 UIStoryboard *story = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
        ChooseAddressVc *sec=[story instantiateViewControllerWithIdentifier:@"ChooseAddressVc"];
        sec.myDelegate = self;
        sec.modalPresentationStyle = UIModalPresentationOverCurrentContext;
        sec.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
        [self presentViewController:sec animated:YES completion:^{

        }];

从Viewcontroller B推送到C

UIStoryboard*Story=[UIStoryboard storyboardWithName:@"Main2" bundle:nil];
    AddNewAddressVc*choose=[Story instantiateViewControllerWithIdentifier:@"AddNewAddressVc"];
    [self.navigationController pushViewController:choose animated:YES];

注意:当我出现当前背景时,我需要从B推送到C控制器。 更好地了解我们无法将导航控制器作为ROOT VIEWCONTROLLER分配我们需要获得透明效果

1 个答案:

答案 0 :(得分:2)

在您的情况下,B视图中的self.navigationController控制器为零。您需要使用B视图控制器创建UINavigationControllerrootViewController。从A呈现创建的UINavigationController而不是呈现B视图控制器,之后您可以在B视图控制器中使用self.navigationController

您的代码已编辑:

    UIStoryboard *story = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
    ChooseAddressVc *sec=[story instantiateViewControllerWithIdentifier:@"ChooseAddressVc"];
    sec.myDelegate = self;

    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:sec];
    navController.modalPresentationStyle = UIModalPresentationOverCurrentContext;
    navController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;

    [self presentViewController:navController animated:YES completion:^{

    }];
相关问题