在模态视图控制器上呈现模态视图控制器

时间:2015-04-05 04:36:22

标签: ios modal-dialog transition

我有一个视图控制器VC1,它从一些其他VC0全屏显示。在我的故事板中,我有一个从VC1到VC2的模态segue也在全屏显示。在我的应用程序中,我可以通过VC0在VC1上清楚地看到VC2,因为它们的某些部分视图是透明的。完美。

但是,我将多次重用VC2,所以我不想为我的故事板中的每个控制器设置一个segue,所以我想以编程方式完成同样的事情。但是,当我调用presentViewController:animated:VC1中的完成以呈现VC2时,VC1的视图在模态转换完成时消失。当VC2被解除时,VC1的视图在转换动画完成时重新出现。

如何以编程方式获得与使用storyboard segue时相同的效果?

3 个答案:

答案 0 :(得分:12)

function iterateObj(data) {

    for (var key in data) {

       if (typeof(data[key]) == "object" && data[key] != null) {
           iterateObj(data[key]);
       } else {
           console.log(key + "  :  " + data[key]);
       }
    }
}

答案 1 :(得分:8)

您需要将呈现的控制器的modalPresentationStyle属性设置为UIModalPresentationOverFullScreen。在致电presentViewController:animated:completion之前设置该属性。

答案 2 :(得分:1)

您只能出现在可见的控制器上,通常是rootViewController。但是,当有一个模态表示的控制器时,它会覆盖根控制器,因此您不能使用它。但是您可以显示模式,可以通过rootViewController.prsentedViewController访问。这是一些代码:

let rootVC = window?.rootViewController
let presentingVC = (rootVC?.presentedViewController ?? rootVC)
presentingVC?.present(myController, animated: true, completion: nil)

您不需要更改modalPresentationStyle