从__block typeof(self)blockSelf

时间:2015-08-22 15:35:43

标签: ios modalviewcontroller ios7.1

我很难为iOS 7做这个工作,但它适用于iOS 8。

我有一个从父vc呈现的透明模态视图,它是导航视图控制器层次结构的一部分。模态视图按预期动画到位,但底层父视图消失。

在模态视图完成其工作后,它被解除并返回到呈现视图控制器。但我希望当模态视图在屏幕上时,呈现的vc保持不变。

我已经尝试了几乎所有来自SO的建议,例如设置呈现vc的模态呈现样式,设置定义上下文等等,但没有一个解决方案对我有用。

为什么这在iOS 8中如此简单,在iOS 7中如此之难?

__block typeof(self) blockSelf = self;

void (^completionBlock)(POJSONResponse *obj, NSError *err) = ^(POJSONResponse *obj, NSError *error) {

    if (error == nil) {

        // display a transparent modal view
        UINavigationController *navController = blockSelf.navigationController;
        ModalViewController *mvc = [[ModalViewController alloc] init];
        [mvc setModalPresentationStyle:UIModalPresentationOverCurrentContext];

        navController.modalPresentationStyle = UIModalPresentationCurrentContext;
        [navController presentViewController:mvc animated:YES completion:nil];

1 个答案:

答案 0 :(得分:0)

在iOS 7中这很难,因为{8}在iOS 8中是新的。如果您想在iOS 7中使用此效果,则需要自己完成。

请参阅How to present a semi-transparent (half-cut) viewcontroller in iOS?,特别是显示如何将UIModalPresentationOverCurrentContext与自定义UIModalPresentationCustom一起使用的答案。