2015-12-07 55 views
0

我想調出一個UIAlert控制器,在其中選擇如何在我的應用中導出PDF文檔。iOS Alert Controller Whitescreen

該應用程序包含一個ViewController上的WebView,一個視圖應用程序。 問題是,無論何時出現其他控制器,它都會在Web視圖上覆蓋一個空白屏幕,並且不會恢復WebView。這發生在iOS上的每個版本中。

UIAlertController *alertController = [UIAlertController 
              alertControllerWithTitle:@"Share file" message:@"" preferredStyle:UIAlertControllerStyleAlert]; 

    UIAlertAction *cancelAction = [UIAlertAction 
            actionWithTitle:@"Cancel" 
            style:UIAlertActionStyleCancel 
            handler:^(UIAlertAction *action) 
            {}]; 

    UIAlertAction *eMail = [UIAlertAction 
           actionWithTitle:@"Email" 
           style:UIAlertActionStyleDefault 
           handler:^(UIAlertAction *action) 
           { 
            MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init]; 
            [picker setSubject:@""]; 
            [picker addAttachmentData:fileData mimeType:@"application/pdf" fileName:fileName]; 
            [picker setToRecipients:[NSArray array]]; 
            [picker setMessageBody:@"" isHTML:NO]; 
            [picker setMailComposeDelegate:self]; 
            [self presentViewController:picker animated:YES completion:nil]; 
           }]; 

    UIAlertAction *docController = [UIAlertAction 
           actionWithTitle:@"Export" 
           style:UIAlertActionStyleDefault 
           handler:^(UIAlertAction *action){ 
            documentController.UTI = @"com.adobe.pdf"; 
            [documentController presentOpenInMenuFromRect:CGRectZero         inView:self.view animated:YES]; }]; 
    [alertController addAction:eMail]; 
    [alertController addAction:docController]; 
    [alertController addAction:cancelAction]; 
    [alertController setModalPresentationStyle:UIModalPresentationCurrentContext]; 
    [self presentViewController:alertController animated:YES completion:nil]; 

我需要完成的共享文件的操作後,web視圖呈現在其最後的狀態

+0

爲什麼不使用標準的'UIActivityViewController'來共享PDF文件? – rmaddy

+0

由於您使用兩個不同的視圖控制器,您應該在呈現'documentController'之前明確地關閉警報控制器。 – johnnieb

+0

@rmaddy嗨,即使使用UIActivityViewController,它可以讓我的應用程序在完成其操作後顯示一個空白屏幕。 –

回答

0

由於@johnnieb說,我裹在調度塊中的表現和工作就像一個魅力!

dispatch_async(dispatch_get_main_queue(),^{ 
    [self presentViewController:alertController animated:YES completion:^{}]; 
}); 

謝謝!


這是有效的,因爲我們需要等待主隊列完全關閉先前的視圖控制器。