2012-10-03 21 views
6

मेरा एप्लिकेशन QLPreviewController का उपयोग सभी प्रकार की फ़ाइलों और आईओएस 5.x में प्रदर्शित करने के लिए कर रहा है, ऐसा लगता है कि यह ठीक है।आईओएस 6.0 क्विकुक्यू QLPreviewController त्रुटियों के साथ: "लोड प्रॉक्सी के लिए पूर्वावलोकन आइटम नहीं मिल रहा है"

अब, आईओएस 6.0 में, मुझे एक त्रुटि मिलती है और यह नियंत्रक को दिखाती है लेकिन निरंतर लोडिंग सूचक के साथ और वास्तव में कुछ भी लोड नहीं करती है।

लॉग में त्रुटि है: लोड प्रॉक्सी के लिए पूर्वावलोकन आइटम नहीं मिली: < QLPreviewItemProxy: 0x8dbf480 > - फ़ाइल: //localhost/Users/me/Library/Application%20Support/iPhone%20Simulator/6.0/Applications/ E6A58F8D-71F3-4C7A-B16E-4BA017E318E5/दस्तावेज़/temp // Welcome.docx

किसी और के पास आईओएस 6.0 में क्विकुक के साथ यह या अन्य समस्याएं हैं? या क्या प्रयास करने के लिए कोई सुझाव? मैंने इसे आईफोन और आईपैड के माध्यम से नियंत्रक को धक्का देने और इसे प्रस्तुत करने के साथ किया है।

संपादित करें: यह भी ध्यान दिया गया है कि प्रश्न में यूआरएल (जिसे वे कहते हैं बुरा है) केवल फाइल के साथ शुरू होता है: // लेकिन फ़ाइल: // लोकलहोस्ट जबकि मूल फ़ाइल सिर्फ वास्तविक पथ से शुरू होती है (यानी: फ़ाइल : /// उपयोगकर्ता)।

+0

बस कुछ और जानकारी: मैंने फ़ाइल पर इसे वापस कर सकते हैं + canPreviewItem पूर्वावलोकन में इसे वापस करने से पहले ItemAtIndex और यह सत्य लौटाता है। तो नियंत्रक के अनुसार उस विधि से लौटने से पहले, यूआरएल वास्तव में पूर्वावलोकन करने योग्य है .... आपको लगता है कि यूआरएल उसमें मेजबान के बिना है। – valheru

+0

एक और अद्यतन: मैं QLPreviewController का उपयोग करता है एक ब्रांड नई परियोजना बनाने की कोशिश की। इसी तरह की परिस्थितियों और मैंने पाया कि अजीब प्रॉक्सी त्रुटि अभी भी होती है लेकिन फ़ाइल प्रदर्शित करता है! तो अब मुझे यह पता लगाने की जरूरत है कि क्या अलग है। लेकिन तथ्य यह है कि त्रुटि अभी भी संदिग्ध प्रतीत होती है। आश्चर्यचकित अधिक लोगों ने इसका अनुभव किया। – valheru

उत्तर

10

अच्छी तरह से शोध के एक समूह के बाद और मूलभूत क्विकलुक दर्शक से फिर से निर्माण करने के बाद, मैंने पाया कि त्रुटि अभी भी लॉग इन थी लेकिन दस्तावेजों को वास्तव में प्रदर्शित किया जा रहा था जो वे मेरे मूल से नहीं थे परियोजना।

फिर मैंने इसे प्रस्तुत करने से पहले QLPreviewController को नेविगेशन नियंत्रक के अंदर डालने का प्रयास किया और उसी मुद्दे के साथ समाप्त हो गया। मैं इसे प्रस्तुत करने से पहले UINavigationController में QLPreviewController को लपेट रहा था क्योंकि यह नेविगेशन को एक कस्टम बटन असाइन करने का तरीका प्रतीत होता था। यह आईओएस 5.1 में ठीक काम करता है (ऊपर बताए अनुसार) लेकिन स्पष्ट रूप से आईओएस 6.0 इसे पसंद नहीं करता है।

एक UINavigationController में QLPreviewController को लपेटने वाले अतिरिक्त कोड को हटाने से दस्तावेज़ को प्रदर्शित करने की अनुमति मिलती है। नियंत्रक के

उदाहरण लपेटा जा रहा है:

QLPreviewController* previewer = [[QLPreviewController alloc] init]; 
previewer.dataSource = self; 
previewer.delegate = self; 
[previewer setCurrentPreviewItemIndex:0]; 

UINavigationController* previewNavCtrl = [[UINavigationController alloc] init]; 
[previewNavCtrl pushViewController:previewer animated:NO]; 

[self presentModalViewController:previewNavCtrl animated:YES]; 

को बदलें:

QLPreviewController* previewer = [[QLPreviewController alloc] init]; 
previewer.dataSource = self; 
previewer.delegate = self; 
[previewer setCurrentPreviewItemIndex:0]; 

[self presentModalViewController:previewer animated:YES]; 

नोट: फिर प्रॉक्सी त्रुटि अभी भी लॉग तथापि

भी में दिखाने के लिए लगता है: किसी भी UIBarButtonItem अनुकूलन अब NavigationController के बिना काम नहीं कर रहे हैं =/

अपडेट: मैंने पाया कि fileURLWithpath का उपयोग करके FileURL उत्पन्न करने के लिए previewItemAtIndex ने मूल त्रुटि को दूर कर दिया है। हालांकि, वही समस्या तब भी होती है जहां दस्तावेज़ लोड नहीं होगा।

पथ के लिए फाइल एक्सटेंशन जारी नहीं किया जा सका:: /उपयोगकर्ताओं/मुझे/Library/Application% 20Support/iPhone के

एक नया त्रुटि है (एक मैं भी ऐसे व्यक्ति रखना जो देखा है) % 20Simulator/6.0/अनुप्रयोग/339DDF48-AF93-41B5-B81E-A39440A131C6/दस्तावेज़/अस्थायी/Welcome1।docx

अंतिम अद्यतन: ठीक विस्तार मुद्दा/त्रुटि क्योंकि मैं ([NSString stringByAddingPercentEscapesUsingEncoding] आदि का प्रयोग करके) जब [NSURL fileURLWithPath] कि पहले से ही संभाल चाहिए मैन्युअल रूप से रिक्त स्थान के लिए 20% से जोड़ने की कोशिश कर रहा था। एक बार मैंने इसे हटा दिया, यह काम किया और अब मैं आईओएस 6 पर हूँ! तो असली समस्या UINavigationController से कुछ लेना देना नहीं था, लेकिन वास्तव में फ़ाइल यूआरएल पूर्वावलोकन ItemAtIndex के माध्यम से पारित किया जा रहा था।

+0

मुझे एक ही समस्या मिली। लेकिन मेरा रिमोट यूआरएल है। मुझे क्या करना चाहिए? कोई उपाय? –

+0

मैंने त्रुटि को हल किया है: fileURLWithpath।वास्तव में जब मैंने सही बटन पर धक्का दिया तो ऐप ने क्रैश किया। धन्यवाद!! – xarly

0

मैं दूरदराज के यूआरएल से फ़ाइल डाउनलोड की है और स्थानीय रूप से सहेजा, तो मैं पीडीएफ QLPreviewController .इसके IOS 6 इसके काम करने का उपयोग कर प्रदर्शित करते हैं।

NSString *local_location; 

    NSString *path = [[NSBundle mainBundle] pathForResource:@"sampleData" ofType:@"plist"]; 
     path = NSTemporaryDirectory(); 
    local_location= [path stringByAppendingPathComponent:[NSString stringWithFormat:@"My_Invoice.pdf"]]; 
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString: remoteurl]]; 
     [request setDownloadDestinationPath:local_location]; 
     [request startSynchronous]; 


For showing the Pdf : 



QLPreviewController* preview = [[QLPreviewController alloc] init]; 
     preview.dataSource = self; 
     [self presentModalViewController:preview animated:YES]; 





QLPreviewController delegate methods are : 




- (NSInteger) numberOfPreviewItemsInPreviewController: (QLPreviewController *) controller 
{ 
    return 1; 
} 

- (id <QLPreviewItem>)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index 
{ 

    return [NSURL fileURLWithPath:local_location]; 


} 
0

1)

NSMutableArray * samplepdf = [[NSMutableArray alloc] initWithObjects:: @ "sam1.pdf

सबसे पहले मैं निम्नलिखित कोड का उपयोग कर दूरस्थ url से फाइल सेव ", @" sam2.pdf ", @" sam3.pdf ", @" sam4.pdf ", शून्य];

// मजबूत textDocument निर्देशिका

2)

QLPreviewController * previewController = [[QLPreviewController alloc] init] में पीडीएफ फ़ाइल खींचें; previewController.dataSource = self; पूर्वावलोकन नियंत्रक।currentPreviewItemIndex = [indexPath पंक्ति]; [आत्म presentModalViewController: previewController एनिमेटेड: हाँ];

3) #pragma निशान QLPreviewControllerDataSource

// मदों की संख्या कि पूर्वावलोकन नियंत्रक का पूर्वावलोकन चाहिए रिटर्न

- (NSInteger) numberOfPreviewItemsInPreviewController: (QLPreviewController *) previewController {

वापसी [samplepdf गिनती];

}

// आइटम कि पूर्वावलोकन नियंत्रक का पूर्वावलोकन चाहिए रिटर्न

- (आईडी) previewController: (QLPreviewController *) previewController previewItemAtIndex: (NSInteger) सूचकांक {

NSString * documentsDirectoryPath = [[NSBundle mainBundle] resourcePath];

NSString *dataPath =[documentsDirectoryPath stringByAppendingPathComponent:[samplepdf objectAtIndex:index]]; 

NSURL *url = [NSURL fileURLWithPath:dataPath isDirectory:YES]; 
return url; 

}

1

मैं इस पुराने सवाल का जवाब देने यदि किसी एक ही मुद्दे का सामना सोचा।

आप Xcode, हर बार आवेदन के UUID बदल रहा है का उपयोग करके ऐप्लिकेशन डिबगिंग है। लेकिन यह जब एप्लिकेशन को उपकरण से लोड कर रहा है लागू नहीं है।

उदाहरण के लिए: मुझे एक ही ऐप के लिए निम्नलिखित पथ मिल गए हैं।

दस्तावेज़ पथ: file: /// var/मोबाइल/आवेदन/CBF533A7-C19A-4336-A92C-DC1A48242A8A/दस्तावेज़/ दस्तावेज़ पथ: file: /// var/मोबाइल/आवेदन/ADB99D3B-EACA-482D -BB8A-0C12B340A044/दस्तावेज़/

यह - (id <QLPreviewItem>)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index

NSString *documentsDirectoryPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
NSURL *localDocumentsDirectoryURL = [NSURL fileURLWithPath:documentsDirectoryPath]; 
NSURL *fileURL = [localDocumentsDirectoryURL URLByAppendingPathComponent:fileName isDirectory:NO]; 
return fileURL; 

* fileName पर निम्न सिर्फ नाम (medoc.pdf) जहां दस्तावेज़ फ़ोल्डर पर पा सकते हैं फ़ाइल है जोड़कर दूर किया जा सकता।

+0

यह मेरा मुद्दा था। मैं पूर्ण दस्तावेज पथ को सहेजने की गलती कर रहा था जिसमें आवेदन यूयूआईडी शामिल था। – ppilone