2010-10-24 11 views
12

मैं अपने आईपैड ऐप में UIImagePickerControl प्रदर्शित करने की कोशिश कर रहा हूं। सबसे पहले, डीबगर ने मुझे बताया कि आईपैड पर इसे करने पर मुझे इसे पॉपओवर में रखना होगा। तो मैं निम्नलिखित कोड लिखा है:UIPopoverController और UIImagePickerControl: "पॉपओवर को उस दृश्य से प्रस्तुत नहीं किया जा सकता है जिसमें खिड़की नहीं है"

UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; 
imagePicker.delegate = self; 
imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
popover = [[UIPopoverController alloc] initWithContentViewController:imagePicker]; 
[popover presentPopoverFromRect:CGRectMake(0.0, 0.0, 400.0, 400.0) 
         inView:self.view 
     permittedArrowDirections:UIPopoverArrowDirectionAny 
         animated:YES]; 

हालांकि, अब मैं निम्नलिखित त्रुटि मिलती है: Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Popovers cannot be presented from a view which does not have a window.'

मुझे क्या करना चाहिए पर कोई सुझाव? मुझे पता है कि self.view में एक खिड़की है, लेकिन स्पष्ट रूप से ... यह नहीं है?

+1

यह संभवतः कोड का सबसे तेज़ हिस्सा भी है जो मुझे एक त्वरित पॉपओवर नियंत्रक होने के लिए मिला है। बहुत बढ़िया। –

उत्तर

13

यह तब हो सकता है जब दृश्य लोड होने से पहले कोड का निष्पादन निष्पादित हो रहा है, self.view अभी भी शून्य है और इसलिए self.view.window है।

क्या यह संभव है कि आप इसे लोड करने से पहले एक इनिट विधि या किसी अन्य स्थान पर कर रहे हों (-viewDidLoad: से पहले कहा जाता है)?

+1

अच्छी कॉल - मैंने फ़ंक्शन कॉल को '-viewDidAppear:' पर ​​ले जाया है और यह ठीक से काम करता है! – Jason

2

यह त्रुटि मुझे परेशान कर रही थी लेकिन यह पता चला कि ऐसा इसलिए हुआ क्योंकि barButtonItem मैं presentPopoverFromBarButtonItem में UIBarButtonSystemItemFlexibleSpace आइटम चींटी वास्तविक बटन था। मेरी उपयोगकर्ता त्रुटि लेकिन बस इतना लोगों को पता है कि यह