2013-07-06 44 views
2

對於iOS6 UIActivityViewController是否存在與此相同的代碼(下面的代碼)?問題是,我可以通過url共享數據並保存文件名嗎?到目前爲止,我可以想出如何做到這一點的唯一方法是將PDF轉換爲NSData,並將數據添加爲activityItem。工作正常,但我失去了所附PDF的名稱。UIActivityViewController - 從URL中讀取附加文件的文件名保留

[composer addAttachmentData:pdfData mimeType:@"application/pdf" fileName:@"myPDF.pdf"]; 
+1

是的,我認爲這是可能的,試試這個 [答案] [1] [1]:HTTP://計算器。 com/questions/13250463/uiactivityview-attach-file-to-email/13419008#13419008 – Ned

+0

是的,工作正常。不知道爲什麼我以前不炒。謝謝。請將評論複製到答案,以便我可以接受。 – Mrwolfy

回答

4

是的,我認爲這是可能的,試試這個

NSString *str = [[NSBundle mainBundle] pathForResource:@"AppDistributionGuide" ofType:@"pdf"]; 
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[@"Test", [NSURL fileURLWithPath:str]] applicationActivities:nil]; 
+0

是否有改變文件名? – MobileMon

+0

@MobileMon嗨,嘗試在磁盤上保存所需名稱的文件,並將其設置爲「AppDistributionGuide」。希望它能幫助你。 – Ned

0

請參考下面的方式來實現這一目標。從URL保留從讀附加文件的文件名:

dispatch_async(dispatch_get_main_queue(),^{ 
    NSData *fileData; 
    NSString *documentDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]; 
    NSString *filePath = [documentDir stringByAppendingPathComponent:@"filename.pdf"]; 

    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.test.com/filename.pdf"]]; 
    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue currentQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) { 
     if (error) { 
      NSLog(@"Download Error:%@",error.description); 
     } 
     if (data) { 
      fileData = data; 
      [data writeToFile:filePath atomically:YES]; 
      NSLog(@"File is saved to %@",filePath); 
     } 
    }]; 
    if(fileData && filePath) { 
      UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[[NSURL fileURLWithPath:filePath]] applicationActivities:nil]; 
      [self presentViewController:activityViewController animated:YES completion:nil]; 
    } 
});