我有两个视图控制器oneVC.swift和twoVC.swift。 我想在oneVC.swift上显示两个VC.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
提前致谢。
答案 0 :(得分:0)
我的第一个ViewController
是PeopleViewController
,第二个是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而不是呈现它。