使用背景颜色推送新视图控制器"清除"

时间:2017-01-24 10:39:34

标签: ios popover pushviewcontroller

我有两个视图控制器oneVC.swift和twoVC.swift。 我想在oneVC.swift上显示两个VC.swift作为覆盖,其中twoVC.swift的背景颜色为透明。请参阅附件。

oneVC.swift twoVC.swift

我正在尝试使用以下代码:

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let homeVC = storyboard.instantiateViewController(withIdentifier: "twoVC") as! twoVC    
homeVC.providesPresentationContextTransitionStyle = true;
homeVC.definesPresentationContext = true;
homeVC.modalPresentationStyle = .overCurrentContext
self.navigationController!.present(homeVC, animated: false, completion: nil)

这段代码工作正常但是当前代码的问题在于我无法从twoVC.swift进一步推送任何新控制器,因为这是通过oneVC.swift呈现的。 如果我使用

  

pushViewController

像这样:

self.navigationController?.pushViewController(homeVC, animated: false)

使用这个我无法实现twoVC.swift的透明度。 那么我是否有可能使用

将第二个视图控制器推到第一个具有透明度的视图控制器上
  

pushViewController

提前致谢。

2 个答案:

答案 0 :(得分:0)

我的第一个ViewControllerPeopleViewController,第二个是PopUpViewController,还可以查看图片。我的代码在目标c中,您可以转换为swift。check image

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {

         PopUpViewController * popUp = [self.storyboard instantiateViewControllerWithIdentifier:@"PopUpViewController"];

        popUp.nav=self.navigationController;

        [PeopleViewController setPresentationStyleForSelfController:self presentingController:popUp];

        [self presentViewController:popUp animated:YES completion:nil];
    }

+ (void)setPresentationStyleForSelfController:(UIViewController *)selfController presentingController:(UIViewController *)presentingController
    {
            presentingController.providesPresentationContextTransitionStyle = YES;
            presentingController.definesPresentationContext = YES;

            [presentingController setModalPresentationStyle:UIModalPresentationOverCurrentContext];
    }

答案 1 :(得分:0)

问题在于

self.navigationController!.present(homeVC, animated: false, completion: nil)

这意味着您将通过导航控制器呈现homeVC。呈现视图控制器不会将其添加到导航堆栈。所以要解决这个问题,你需要推送homeVC而不是呈现它。