Ios 在iPhone上未调用dismissViewControllerAnimated

Ios 在iPhone上未调用dismissViewControllerAnimated,ios,objective-c,iphone,ipad,Ios,Objective C,Iphone,Ipad,我有下面的代码,我试图显示一个PDF预览。它在iPad上写得非常完美,但当我试图在iPhone上写的时候,它却不起作用 QLPreviewController* preview = [[QLPreviewController alloc] init]; preview.dataSource = self; [self dismissViewControllerAnimated:YES completion:^{ [self presentV

我有下面的代码,我试图显示一个PDF预览。它在iPad上写得非常完美,但当我试图在iPhone上写的时候,它却不起作用

QLPreviewController* preview = [[QLPreviewController alloc] init];
        preview.dataSource = self;
        [self dismissViewControllerAnimated:YES completion:^{
            [self presentViewController:preview animated:YES completion:nil];
        }];
iPhone上的线程永远不会到达这一行

[self presentViewController:preview animated:YES completion:nil];

但在ipad上运行良好。。我甚至不知道该看什么。欢迎提供任何帮助。

要访问块内的实例/变量(在块外声明),您需要如下声明这些实例/变量: __块类型标识符=初始值(可选),例如,在您的情况下使用 __块QLEVIEWCONTROLLER*preview=[[QLEVIEWCONTROLLER alloc]init]

尝试使用

[self.presentingViewController presentViewController:preview animated:YES completion:nil];
而不是

[self presentViewController:preview animated:YES completion:nil];

视图控制器是否仅在iPad上受支持?试着用这个框架做一个空白的示例项目,试着展示一下Iphone是否支持它。线程从未进入那个代码块,所以它与dismissViewControllerAnimated…Hrmm有关。不幸的是,线程仍然没有进入代码块。出于某种原因,iphone对self DismissionViewControlleranimated并不满意。我不知道为什么,这不管用。它不起作用的原因是,在iPhone上运行的主线程没有进入代码块。我测试了我的原始代码,删除了代码块,但保留了presentViewController代码行,这将实际加载预览,但是,因为它不在代码块中,当我尝试再次运行相同的代码时,它会崩溃。谢谢你提出了一个解决方案。。但不幸的是,它没有工作。如果您从代码块中删除[self dismission…],并将其放在NSLog(@“”)中;并为其设置断点,应用程序是否进入?是。也只是一方之间没有任何^{…}];被认为是apple文档中的代码块。